diff --git a/.eslintrc.json b/.eslintrc.json index 33e0aafa1..1b7628ebf 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -24,12 +24,18 @@ { "files": ["*.ts", "*.tsx"], "extends": ["plugin:@nx/typescript"], - "rules": {} + "rules": { + "@typescript-eslint/no-extra-semi": "error", + "no-extra-semi": "off" + } }, { "files": ["*.js", "*.jsx"], "extends": ["plugin:@nx/javascript"], - "rules": {} + "rules": { + "@typescript-eslint/no-extra-semi": "error", + "no-extra-semi": "off" + } }, { "files": ["*.ts"], diff --git a/.github/workflows/build-code.yml b/.github/workflows/build-code.yml index e1f994749..5c072d760 100644 --- a/.github/workflows/build-code.yml +++ b/.github/workflows/build-code.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: node_version: - - 18 + - 20 steps: - name: Checkout code uses: actions/checkout@v4 @@ -24,16 +24,16 @@ jobs: uses: actions/setup-node@v4 with: node-version: ${{ matrix.node_version }} - cache: 'yarn' + cache: 'npm' - name: Install dependencies - run: yarn install --frozen-lockfile + run: npm ci - name: Check formatting - run: yarn format:check + run: npm run format:check - name: Execute tests - run: yarn test + run: npm test - name: Build application - run: yarn build:production + run: npm run build:production diff --git a/.gitignore b/.gitignore index 1339a53b7..d7e5e5eb1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,8 +5,8 @@ /tmp # dependencies -/.yarn /node_modules +npm-debug.log # IDEs and editors /.idea @@ -28,15 +28,14 @@ .env .env.prod .nx/cache +.nx/workspace-data /.sass-cache /connect.lock /coverage /dist /libpeerconnection.log -npm-debug.log testem.log /typings -yarn-error.log # System Files .DS_Store diff --git a/.nvmrc b/.nvmrc index 3f430af82..9a2a0e219 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v18 +v20 diff --git a/.prettierignore b/.prettierignore index a40959061..27e509393 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,5 @@ /.nx/cache +/.nx/workspace-data /apps/client/src/polyfills.ts /dist /test/import diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index 788570fcd..000000000 --- a/.yarnrc +++ /dev/null @@ -1 +0,0 @@ -network-timeout 600000 diff --git a/CHANGELOG.md b/CHANGELOG.md index c1c4c1999..91a583450 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,306 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.106.0-beta.2 - 2024-08-26 + +### Changed + +- Reworked the portfolio calculator +- Exposed the maximum of chart data items as an environment variable (`MAX_CHART_ITEMS`) + +### Fixed + +- Fixed an issue in the view mode toggle of the holdings tab on the home page (experimental) + +## 2.105.0 - 2024-08-21 + +### Added + +- Added support to deactivate rules in the _X-ray_ section (experimental) + +### Changed + +- Improved the language localization for German (`de`) + +### Fixed + +- Fixed the currency conversion for fees and values in the dividend import by applying the correct rate based on the activity date +- Fixed the currency conversion for fees and values in the activities service by applying the correct rate based on the activity date + +## 2.104.1 - 2024-08-17 + +### Fixed + +- Fixed an issue with the clone functionality of an activity caused by a changed date format + +## 2.104.0 - 2024-08-17 + +### Added + +- Set up a notification service for alert and confirmation dialogs + +### Changed + +- Refactored the dark theme CSS selector +- Improved the language localization for German (`de`) +- Upgraded `date-fns` from version `2.29.3` to `3.6.0` +- Upgraded `zone.js` from version `0.14.7` to `0.14.10` + +### Fixed + +- Removed `read_only: true` from the `docker-compose.yml` file to allow `prisma` to run migrations + +## 2.103.0 - 2024-08-10 + +### Changed + +- Improved the color assignment in the chart of the holdings tab on the home page (experimental) +- Enabled Catalan (`ca`) as an option in the user settings (experimental) +- Enabled Polish (`pl`) as an option in the user settings (experimental) +- Improved the language localization for Portuguese (`pt`) +- Optimized the docker image layers to reduce the image size +- Updated the binary targets of `debian-openssl` for `prisma` +- Upgraded `prisma` from version `5.17.0` to `5.18.0` + +## 2.102.0 - 2024-08-07 + +### Added + +- Added support to clone an activity from the account detail dialog (experimental) +- Added support to edit an activity from the account detail dialog (experimental) +- Added support to clone an activity from the holding detail dialog (experimental) +- Added support to edit an activity from the holding detail dialog (experimental) + +### Changed + +- Improved the caching of the benchmarks in the markets overview by returning cached data and recalculating in the background when it expires +- Improved the language localization for German (`de`) +- Improved the language localization for Polish (`pl`) +- Upgraded `Nx` from version `19.5.1` to `19.5.6` + +### Fixed + +- Fixed the cache flush endpoint response + +## 2.101.0 - 2024-08-03 + +### Changed + +- Hardened container security by switching to a non-root user, setting the filesystem to read-only, and dropping unnecessary capabilities + +## 2.100.0 - 2024-08-03 + +### Added + +- Added support to manage tags of holdings in the holding detail dialog + +### Changed + +- Improved the color assignment in the chart of the holdings tab on the home page (experimental) +- Persisted the view mode of the holdings tab on the home page (experimental) +- Improved the language localization for Catalan (`ca`) +- Improved the language localization for Spanish (`es`) + +## 2.99.0 - 2024-07-29 + +### Changed + +- Migrated the usage of `yarn` to `npm` +- Upgraded `storybook` from version `7.0.9` to `8.2.5` +- Downgraded `marked` from version `13.0.0` to `12.0.2` + +## 2.98.0 - 2024-07-27 + +### Added + +- Set up the language localization for Catalan (`ca`) + +### Changed + +- Improved the account selector of the create or update activity dialog +- Improved the handling of the numerical precision in the value component +- Skipped derived currencies in the get quotes functionality of the data provider service +- Improved the language localization for Spanish (`es`) +- Upgraded `angular` from version `18.0.4` to `18.1.1` +- Upgraded `Nx` from version `19.4.3` to `19.5.1` +- Upgraded `prisma` from version `5.16.1` to `5.17.0` + +### Fixed + +- Fixed the dividend import from a data provider for holdings without an account +- Fixed an issue in the public page related to a non-existent access + +## 2.97.0 - 2024-07-20 + +### Added + +- Added _selfh.st_ to the _As seen in_ section on the landing page + +### Changed + +- Improved the numerical precision in the holding detail dialog +- Improved the handling of the numerical precision in the value component +- Optimized the 7d data gathering by prioritizing the currencies +- Improved the language localization for German (`de`) +- Upgraded `Node.js` from version `18` to `20` (`Dockerfile`) +- Upgraded `Nx` from version `19.4.0` to `19.4.3` +- Upgraded `prettier` from version `3.3.1` to `3.3.3` + +### Fixed + +- Fixed the table sorting of the holdings tab on the home page + +## 2.96.0 - 2024-07-13 + +### Changed + +- Improved the chart of the holdings tab on the home page (experimental) +- Separated the icon purposes in the `site.webmanifest` + +### Fixed + +- Fixed an issue in the portfolio summary with the currency conversion of fees +- Fixed an issue in the the search for a holding +- Removed the show condition of the experimental features setting in the user settings + +## 2.95.0 - 2024-07-12 + +### Added + +- Added a chart to the holdings tab of the home page (experimental) + +## 2.94.0 - 2024-07-09 + +### Changed + +- Improved the language localization for German (`de`) + +### Fixed + +- Fixed a pagination issue in the activities endpoint by adding `id` as a secondary sort criterion to `date` to ensure consistent ordering + +## 2.93.0 - 2024-07-07 + +### Added + +- Added the _Crypto Coins Heatmap_ to the resources section +- Added the _Stock Heatmap_ to the resources section +- Extended the content of the _Self-Hosting_ section by the platforms concept on the Frequently Asked Questions (FAQ) page + +### Changed + +- Improved the allocations by ETF holding on the allocations page for the impersonation mode (experimental) +- Improved the detection of REST APIs (`JSON`) used via the scraper configuration +- Improved the usability to delete an asset profile of type currency in the historical market data table and the asset profile details dialog of the admin control +- Refreshed the cryptocurrencies list +- Refactored the thresholds of the rules in the _X-ray_ section +- Removed the obsolete `version` from the `docker-compose` files +- Upgraded `Nx` from version `19.2.2` to `19.4.0` + +## 2.92.0 - 2024-06-30 + +### Added + +- Added support for bulk deletion of asset profiles from the market data table in the admin control panel + +### Changed + +- Added support for derived currencies in the currency validation +- Added support for automatic deletion of unused asset profiles when deleting activities +- Improved the caching of the benchmarks in the markets overview (only cache if needed) +- Upgraded `prisma` from version `5.15.0` to `5.16.1` + +### Fixed + +- Fixed an issue with the all time high in the benchmarks of the markets overview + +## 2.91.0 - 2024-06-26 + +### Added + +- Added a benchmarks preset to the historical market data table of the admin control panel + +### Changed + +- Upgraded `angular` from version `18.0.2` to `18.0.4` + +### Fixed + +- Fixed the dialog position (center) on mobile +- Fixed the horizontal overflow in the historical market data table of the admin control panel +- Changed the mechanism of the `INTRADAY` data gathering to persist data only if the market state is `OPEN` +- Fixed the creation of activities with `MANUAL` data source (with no historical market data) + +## 2.90.0 - 2024-06-22 + +### Added + +- Added a dialog for the benchmarks in the markets overview +- Extended the asset profile details dialog of the admin control for currencies +- Extended the content of the _Self-Hosting_ section by the mobile app question on the Frequently Asked Questions (FAQ) page + +### Changed + +- Moved the indicator for active filters from experimental to general availability +- Improved the error handling in the biometric authentication registration +- Improved the language localization for German (`de`) +- Set up SSL for local development +- Upgraded the _Stripe_ dependencies +- Upgraded `marked` from version `9.1.6` to `13.0.0` +- Upgraded `ngx-device-detector` from version `5.0.1` to `8.0.0` +- Upgraded `ngx-markdown` from version `17.1.1` to `18.0.0` +- Upgraded `zone.js` from version `0.14.5` to `0.14.7` + +## 2.89.0 - 2024-06-14 + +### Added + +- Extended the historical market data table with currencies preset by date and activities count in the admin control panel + +### Changed + +- Improved the date validation in the create, import and update activities endpoints +- Improved the language localization for German (`de`) + +## 2.88.0 - 2024-06-11 + +### Added + +- Set the image source label in `Dockerfile` + +### Changed + +- Improved the style of the blog post list +- Migrated the `@ghostfolio/client` components to control flow +- Improved the language localization for German (`de`) +- Upgraded `angular` from version `17.3.10` to `18.0.2` +- Upgraded `Nx` from version `19.0.5` to `19.2.2` + +## 2.87.0 - 2024-06-08 + +### Changed + +- Improved the portfolio summary +- Improved the allocations by ETF holding on the allocations page (experimental) +- Improved the error handling in the `HttpResponseInterceptor` +- Improved the language localization for German (`de`) +- Upgraded `prisma` from version `5.14.0` to `5.15.0` + +### Fixed + +- Fixed an issue in the _FIRE_ calculator + +## 2.86.0 - 2024-06-07 + +### Added + +- Introduced the allocations by ETF holding on the allocations page (experimental) + +### Changed + +- Upgraded `prettier` from version `3.2.5` to `3.3.1` + +## 2.85.0 - 2024-06-06 ### Added @@ -16,6 +315,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for German (`de`) - Upgraded `ng-extract-i18n-merge` from version `2.10.0` to `2.12.0` +### Fixed + +- Fixed an issue with the default locale in the value component + ## 2.84.0 - 2024-06-01 ### Added @@ -4656,7 +4959,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Added the attribute `precision` in the value component +- Added the attribute `precision` to the value component ### Fixed diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 10323e640..0c76a2924 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,5 +1,54 @@ # Ghostfolio Development Guide +## Development Environment + +### Prerequisites + +- [Docker](https://www.docker.com/products/docker-desktop) +- [Node.js](https://nodejs.org/en/download) (version 20+) +- Create a local copy of this Git repository (clone) +- Copy the file `.env.dev` to `.env` and populate it with your data (`cp .env.dev .env`) + +### Setup + +1. Run `npm install` +1. Run `docker compose --env-file ./.env -f docker/docker-compose.dev.yml up -d` to start [PostgreSQL](https://www.postgresql.org) and [Redis](https://redis.io) +1. Run `npm run database:setup` to initialize the database schema +1. Run `git config core.hooksPath ./git-hooks/` to setup git hooks +1. Start the [server](#start-server) and the [client](#start-client) +1. Open https://localhost:4200/en in your browser +1. Create a new user via _Get Started_ (this first user will get the role `ADMIN`) + +### Start Server + +#### Debug + +Run `npm run watch:server` and click _Debug API_ in [Visual Studio Code](https://code.visualstudio.com) + +#### Serve + +Run `npm run start:server` + +### Start Client + +Run `npm run start:client` and open https://localhost:4200/en in your browser + +### Start _Storybook_ + +Run `npm run start:storybook` + +### Migrate Database + +With the following command you can keep your database schema in sync: + +```bash +npm run database:push +``` + +## Testing + +Run `npm test` + ## Experimental Features New functionality can be enabled using a feature flag switch from the user settings. @@ -10,7 +59,7 @@ Remove permission in `UserService` using `without()` ### Frontend -Use `*ngIf="user?.settings?.isExperimentalFeatures"` in HTML template +Use `@if (user?.settings?.isExperimentalFeatures) {}` in HTML template ## Git @@ -30,26 +79,26 @@ Use `*ngIf="user?.settings?.isExperimentalFeatures"` in HTML template #### Upgrade -1. Run `yarn nx migrate latest` -1. Make sure `package.json` changes make sense and then run `yarn install` -1. Run `yarn nx migrate --run-migrations` (Run `YARN_NODE_LINKER="node-modules" NX_MIGRATE_SKIP_INSTALL=1 yarn nx migrate --run-migrations` due to https://github.com/nrwl/nx/issues/16338) +1. Run `npx nx migrate latest` +1. Make sure `package.json` changes make sense and then run `npm install` +1. Run `npx nx migrate --run-migrations` ### Prisma #### Access database via GUI -Run `yarn database:gui` +Run `npm run database:gui` https://www.prisma.io/studio #### Synchronize schema with database for prototyping -Run `yarn database:push` +Run `npm run database:push` https://www.prisma.io/docs/concepts/components/prisma-migrate/db-push #### Create schema migration -Run `yarn prisma migrate dev --name added_job_title` +Run `npm run prisma migrate dev --name added_job_title` https://www.prisma.io/docs/concepts/components/prisma-migrate#getting-started-with-prisma-migrate diff --git a/Dockerfile b/Dockerfile index f9396d0e7..e6c38f273 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,25 @@ -FROM --platform=$BUILDPLATFORM node:18-slim as builder +FROM --platform=$BUILDPLATFORM node:20-slim AS builder # Build application and add additional files WORKDIR /ghostfolio +RUN apt-get update && apt-get install -y --no-install-suggests \ + g++ \ + git \ + make \ + openssl \ + python3 \ + && rm -rf /var/lib/apt/lists/* + # Only add basic files without the application itself to avoid rebuilding # layers when files (package.json etc.) have not changed COPY ./CHANGELOG.md CHANGELOG.md COPY ./LICENSE LICENSE COPY ./package.json package.json -COPY ./yarn.lock yarn.lock -COPY ./.yarnrc .yarnrc +COPY ./package-lock.json package-lock.json COPY ./prisma/schema.prisma prisma/schema.prisma -RUN apt update && apt install -y \ - g++ \ - git \ - make \ - openssl \ - python3 \ - && rm -rf /var/lib/apt/lists/* -RUN yarn install +RUN npm install # See https://github.com/nrwl/nx/issues/6586 for further details COPY ./decorate-angular-cli.js decorate-angular-cli.js @@ -33,31 +33,35 @@ COPY ./tsconfig.base.json tsconfig.base.json COPY ./libs libs COPY ./apps apps -RUN yarn build:production +RUN npm run build:production # Prepare the dist image with additional node_modules WORKDIR /ghostfolio/dist/apps/api # package.json was generated by the build process, however the original -# yarn.lock needs to be used to ensure the same versions -COPY ./yarn.lock /ghostfolio/dist/apps/api/yarn.lock +# package-lock.json needs to be used to ensure the same versions +COPY ./package-lock.json /ghostfolio/dist/apps/api/package-lock.json -RUN yarn +RUN npm install COPY prisma /ghostfolio/dist/apps/api/prisma # Overwrite the generated package.json with the original one to ensure having # all the scripts COPY package.json /ghostfolio/dist/apps/api -RUN yarn database:generate-typings +RUN npm run database:generate-typings # Image to run, copy everything needed from builder -FROM node:18-slim -RUN apt update && apt install -y \ - curl \ - openssl \ - && rm -rf /var/lib/apt/lists/* - -COPY --from=builder /ghostfolio/dist/apps /ghostfolio/apps -COPY ./docker/entrypoint.sh /ghostfolio/entrypoint.sh +FROM node:20-slim +LABEL org.opencontainers.image.source="https://github.com/ghostfolio/ghostfolio" +ENV NODE_ENV=production + +RUN apt-get update && apt-get install -y --no-install-suggests \ + curl \ + openssl \ + && rm -rf /var/lib/apt/lists/* + +COPY --chown=node:node --from=builder /ghostfolio/dist/apps /ghostfolio/apps +COPY --chown=node:node ./docker/entrypoint.sh /ghostfolio/entrypoint.sh WORKDIR /ghostfolio/apps/api EXPOSE ${PORT:-3333} +USER node CMD [ "/ghostfolio/entrypoint.sh" ] diff --git a/README.md b/README.md index 2d49124b8..47316881f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ **Open Source Wealth Management Software** [**Ghostfol.io**](https://ghostfol.io) | [**Live Demo**](https://ghostfol.io/en/demo) | [**Ghostfolio Premium**](https://ghostfol.io/en/pricing) | [**FAQ**](https://ghostfol.io/en/faq) | -[**Blog**](https://ghostfol.io/en/blog) | [**Slack**](https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg) | [**X**](https://twitter.com/ghostfolio_) +[**Blog**](https://ghostfol.io/en/blog) | [**Slack**](https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg) | [**X**](https://x.com/ghostfolio_) [![Shield: Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-Support-yellow?logo=buymeacoffee)](https://www.buymeacoffee.com/ghostfolio) [![Shield: Contributions Welcome](https://img.shields.io/badge/Contributions-Welcome-orange.svg)](#contributing) @@ -47,7 +47,7 @@ Ghostfolio is for you if you are... - ✅ Create, update and delete transactions - ✅ Multi account management -- ✅ Portfolio performance: Time-weighted rate of return (TWR) for `Today`, `YTD`, `1Y`, `5Y`, `Max` +- ✅ Portfolio performance: Time-weighted rate of return (TWR) for `Today`, `WTD`, `MTD`, `YTD`, `1Y`, `5Y`, `Max` - ✅ Various charts - ✅ Static analysis to identify potential risks in your portfolio - ✅ Import and export transactions @@ -71,7 +71,7 @@ The backend is based on [NestJS](https://nestjs.com) using [PostgreSQL](https:// ### Frontend -The frontend is built with [Angular](https://angular.io) and uses [Angular Material](https://material.angular.io) with utility classes from [Bootstrap](https://getbootstrap.com). +The frontend is built with [Angular](https://angular.dev) and uses [Angular Material](https://material.angular.io) with utility classes from [Bootstrap](https://getbootstrap.com). ## Self-hosting @@ -87,21 +87,21 @@ We provide official container images hosted on [Docker Hub](https://hub.docker.c | Name | Type | Default Value | Description | | ------------------------ | ------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -| `ACCESS_TOKEN_SALT` | string | | A random string used as salt for access tokens | -| `API_KEY_COINGECKO_DEMO` | string (`optional`) |   | The _CoinGecko_ Demo API key | -| `API_KEY_COINGECKO_PRO` | string (`optional`) | | The _CoinGecko_ Pro API | -| `DATABASE_URL` | string | | The database connection URL, e.g. `postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}?sslmode=prefer` | -| `HOST` | string (`optional`) | `0.0.0.0` | The host where the Ghostfolio application will run on | -| `JWT_SECRET_KEY` | string | | A random string used for _JSON Web Tokens_ (JWT) | -| `PORT` | number (`optional`) | `3333` | The port where the Ghostfolio application will run on | -| `POSTGRES_DB` | string | | The name of the _PostgreSQL_ database | -| `POSTGRES_PASSWORD` | string | | The password of the _PostgreSQL_ database | -| `POSTGRES_USER` | string | | The user of the _PostgreSQL_ database | -| `REDIS_DB` | number (`optional`) | `0` | The database index of _Redis_ | -| `REDIS_HOST` | string | | The host where _Redis_ is running | -| `REDIS_PASSWORD` | string | | The password of _Redis_ | -| `REDIS_PORT` | number | | The port where _Redis_ is running | -| `REQUEST_TIMEOUT` | number (`optional`) | `2000` | The timeout of network requests to data providers in milliseconds | +| `ACCESS_TOKEN_SALT` | `string` | | A random string used as salt for access tokens | +| `API_KEY_COINGECKO_DEMO` | `string` (optional) |   | The _CoinGecko_ Demo API key | +| `API_KEY_COINGECKO_PRO` | `string` (optional) | | The _CoinGecko_ Pro API key | +| `DATABASE_URL` | `string` | | The database connection URL, e.g. `postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}?sslmode=prefer` | +| `HOST` | `string` (optional) | `0.0.0.0` | The host where the Ghostfolio application will run on | +| `JWT_SECRET_KEY` | `string` | | A random string used for _JSON Web Tokens_ (JWT) | +| `PORT` | `number` (optional) | `3333` | The port where the Ghostfolio application will run on | +| `POSTGRES_DB` | `string` | | The name of the _PostgreSQL_ database | +| `POSTGRES_PASSWORD` | `string` | | The password of the _PostgreSQL_ database | +| `POSTGRES_USER` | `string` | | The user of the _PostgreSQL_ database | +| `REDIS_DB` | `number` (optional) | `0` | The database index of _Redis_ | +| `REDIS_HOST` | `string` | | The host where _Redis_ is running | +| `REDIS_PASSWORD` | `string` | | The password of _Redis_ | +| `REDIS_PORT` | `number` | | The port where _Redis_ is running | +| `REQUEST_TIMEOUT` | `number` (optional) | `2000` | The timeout of network requests to data providers in milliseconds | ### Run with Docker Compose @@ -146,53 +146,7 @@ Ghostfolio is available for various home server systems, including [CasaOS](http ## Development -### Prerequisites - -- [Docker](https://www.docker.com/products/docker-desktop) -- [Node.js](https://nodejs.org/en/download) (version 18+) -- [Yarn](https://yarnpkg.com/en/docs/install) -- Create a local copy of this Git repository (clone) -- Copy the file `.env.dev` to `.env` and populate it with your data (`cp .env.dev .env`) - -### Setup - -1. Run `yarn install` -1. Run `docker compose --env-file ./.env -f docker/docker-compose.dev.yml up -d` to start [PostgreSQL](https://www.postgresql.org) and [Redis](https://redis.io) -1. Run `yarn database:setup` to initialize the database schema -1. Run `git config core.hooksPath ./git-hooks/` to setup git hooks -1. Start the server and the client (see [_Development_](#Development)) -1. Open http://localhost:4200/en in your browser -1. Create a new user via _Get Started_ (this first user will get the role `ADMIN`) - -### Start Server - -#### Debug - -Run `yarn watch:server` and click _Debug API_ in [Visual Studio Code](https://code.visualstudio.com) - -#### Serve - -Run `yarn start:server` - -### Start Client - -Run `yarn start:client` and open http://localhost:4200/en in your browser - -### Start _Storybook_ - -Run `yarn start:storybook` - -### Migrate Database - -With the following command you can keep your database schema in sync: - -```bash -yarn database:push -``` - -## Testing - -Run `yarn test` +For detailed information on the environment setup and development process, please refer to [DEVELOPMENT.md](./DEVELOPMENT.md). ## Public API @@ -233,18 +187,18 @@ Deprecated: `GET http://localhost:3333/api/v1/auth/anonymous/ { - return filter.type; + } = groupBy(filters, ({ type }) => { + return type; }); if (filtersByAccount?.length > 0) { diff --git a/apps/api/src/app/account/create-account.dto.ts b/apps/api/src/app/account/create-account.dto.ts index b719c2619..f3c88316f 100644 --- a/apps/api/src/app/account/create-account.dto.ts +++ b/apps/api/src/app/account/create-account.dto.ts @@ -1,7 +1,8 @@ +import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code'; + import { Transform, TransformFnParams } from 'class-transformer'; import { IsBoolean, - IsISO4217CurrencyCode, IsNumber, IsOptional, IsString, @@ -20,7 +21,7 @@ export class CreateAccountDto { ) comment?: string; - @IsISO4217CurrencyCode() + @IsCurrencyCode() currency: string; @IsOptional() diff --git a/apps/api/src/app/account/update-account.dto.ts b/apps/api/src/app/account/update-account.dto.ts index 1b84a9bf6..6b87af71b 100644 --- a/apps/api/src/app/account/update-account.dto.ts +++ b/apps/api/src/app/account/update-account.dto.ts @@ -1,7 +1,8 @@ +import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code'; + import { Transform, TransformFnParams } from 'class-transformer'; import { IsBoolean, - IsISO4217CurrencyCode, IsNumber, IsOptional, IsString, @@ -20,7 +21,7 @@ export class UpdateAccountDto { ) comment?: string; - @IsISO4217CurrencyCode() + @IsCurrencyCode() currency: string; @IsString() diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index c77696563..0cf63917f 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -81,10 +81,11 @@ export class AdminController { @Post('gather/max') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async gatherMax(): Promise { - const uniqueAssets = await this.dataGatheringService.getUniqueAssets(); + const assetProfileIdentifiers = + await this.dataGatheringService.getAllAssetProfileIdentifiers(); await this.dataGatheringService.addJobsToQueue( - uniqueAssets.map(({ dataSource, symbol }) => { + assetProfileIdentifiers.map(({ dataSource, symbol }) => { return { data: { dataSource, @@ -107,10 +108,11 @@ export class AdminController { @Post('gather/profile-data') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async gatherProfileData(): Promise { - const uniqueAssets = await this.dataGatheringService.getUniqueAssets(); + const assetProfileIdentifiers = + await this.dataGatheringService.getAllAssetProfileIdentifiers(); await this.dataGatheringService.addJobsToQueue( - uniqueAssets.map(({ dataSource, symbol }) => { + assetProfileIdentifiers.map(({ dataSource, symbol }) => { return { data: { dataSource, diff --git a/apps/api/src/app/admin/admin.module.ts b/apps/api/src/app/admin/admin.module.ts index c0632a87e..67eed9202 100644 --- a/apps/api/src/app/admin/admin.module.ts +++ b/apps/api/src/app/admin/admin.module.ts @@ -1,3 +1,5 @@ +import { BenchmarkModule } from '@ghostfolio/api/app/benchmark/benchmark.module'; +import { OrderModule } from '@ghostfolio/api/app/order/order.module'; import { SubscriptionModule } from '@ghostfolio/api/app/subscription/subscription.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; @@ -20,11 +22,13 @@ import { QueueModule } from './queue/queue.module'; @Module({ imports: [ ApiModule, + BenchmarkModule, ConfigurationModule, DataGatheringModule, DataProviderModule, ExchangeRateDataModule, MarketDataModule, + OrderModule, PrismaModule, PropertyModule, QueueModule, diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 52bc3d24e..348a8d8d3 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -1,3 +1,5 @@ +import { BenchmarkService } from '@ghostfolio/api/app/benchmark/benchmark.service'; +import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { SubscriptionService } from '@ghostfolio/api/app/subscription/subscription.service'; import { environment } from '@ghostfolio/api/environments/environment'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; @@ -14,21 +16,24 @@ import { PROPERTY_IS_READ_ONLY_MODE, PROPERTY_IS_USER_SIGNUP_ENABLED } from '@ghostfolio/common/config'; +import { isCurrency, getCurrencyFromSymbol } from '@ghostfolio/common/helper'; import { AdminData, AdminMarketData, AdminMarketDataDetails, AdminMarketDataItem, - Filter, - UniqueAsset + AssetProfileIdentifier, + EnhancedSymbolProfile, + Filter } from '@ghostfolio/common/interfaces'; import { MarketDataPreset } from '@ghostfolio/common/types'; -import { BadRequestException, Injectable } from '@nestjs/common'; +import { BadRequestException, Injectable, Logger } from '@nestjs/common'; import { AssetClass, AssetSubClass, Prisma, + PrismaClient, Property, SymbolProfile, DataSource, @@ -41,10 +46,12 @@ import { groupBy } from 'lodash'; @Injectable() export class AdminService { public constructor( + private readonly benchmarkService: BenchmarkService, private readonly configurationService: ConfigurationService, private readonly dataProviderService: DataProviderService, private readonly exchangeRateDataService: ExchangeRateDataService, private readonly marketDataService: MarketDataService, + private readonly orderService: OrderService, private readonly prismaService: PrismaService, private readonly propertyService: PropertyService, private readonly subscriptionService: SubscriptionService, @@ -56,7 +63,9 @@ export class AdminService { currency, dataSource, symbol - }: UniqueAsset & { currency?: string }): Promise { + }: AssetProfileIdentifier & { currency?: string }): Promise< + SymbolProfile | never + > { try { if (dataSource === 'MANUAL') { return this.symbolProfileService.add({ @@ -93,7 +102,10 @@ export class AdminService { } } - public async deleteProfileData({ dataSource, symbol }: UniqueAsset) { + public async deleteProfileData({ + dataSource, + symbol + }: AssetProfileIdentifier) { await this.marketDataService.deleteMany({ dataSource, symbol }); await this.symbolProfileService.delete({ dataSource, symbol }); } @@ -151,7 +163,16 @@ export class AdminService { [{ symbol: 'asc' }]; const where: Prisma.SymbolProfileWhereInput = {}; - if (presetId === 'CURRENCIES') { + if (presetId === 'BENCHMARKS') { + const benchmarkAssetProfiles = + await this.benchmarkService.getBenchmarkAssetProfiles(); + + where.id = { + in: benchmarkAssetProfiles.map(({ id }) => { + return id; + }) + }; + } else if (presetId === 'CURRENCIES') { return this.getMarketDataForCurrencies(); } else if ( presetId === 'ETF_WITHOUT_COUNTRIES' || @@ -201,107 +222,133 @@ export class AdminService { } } - let [assetProfiles, count] = await Promise.all([ - this.prismaService.symbolProfile.findMany({ - orderBy, - skip, - take, - where, - select: { - _count: { - select: { Order: true } - }, - assetClass: true, - assetSubClass: true, - comment: true, - countries: true, - currency: true, - dataSource: true, - id: true, - name: true, - Order: { - orderBy: [{ date: 'asc' }], - select: { date: true }, - take: 1 - }, - scraperConfiguration: true, - sectors: true, - symbol: true, - tags: true - } - }), - this.prismaService.symbolProfile.count({ where }) - ]); + const extendedPrismaClient = this.getExtendedPrismaClient(); - let marketData: AdminMarketDataItem[] = assetProfiles.map( - ({ - _count, - assetClass, - assetSubClass, - comment, - countries, - currency, - dataSource, - id, - name, - Order, - sectors, - symbol, - tags - }) => { - const countriesCount = countries ? Object.keys(countries).length : 0; - const marketDataItemCount = - marketDataItems.find((marketDataItem) => { - return ( - marketDataItem.dataSource === dataSource && - marketDataItem.symbol === symbol - ); - })?._count ?? 0; - const sectorsCount = sectors ? Object.keys(sectors).length : 0; + try { + let [assetProfiles, count] = await Promise.all([ + extendedPrismaClient.symbolProfile.findMany({ + orderBy, + skip, + take, + where, + select: { + _count: { + select: { Order: true } + }, + assetClass: true, + assetSubClass: true, + comment: true, + countries: true, + currency: true, + dataSource: true, + id: true, + isUsedByUsersWithSubscription: true, + name: true, + Order: { + orderBy: [{ date: 'asc' }], + select: { date: true }, + take: 1 + }, + scraperConfiguration: true, + sectors: true, + symbol: true, + tags: true + } + }), + this.prismaService.symbolProfile.count({ where }) + ]); - return { - assetClass, - assetSubClass, - comment, - currency, - countriesCount, - dataSource, - id, - name, - symbol, - marketDataItemCount, - sectorsCount, - activitiesCount: _count.Order, - date: Order?.[0]?.date, - tags - }; - } - ); + let marketData: AdminMarketDataItem[] = await Promise.all( + assetProfiles.map( + async ({ + _count, + assetClass, + assetSubClass, + comment, + countries, + currency, + dataSource, + id, + isUsedByUsersWithSubscription, + name, + Order, + sectors, + symbol, + tags + }) => { + const countriesCount = countries + ? Object.keys(countries).length + : 0; + const marketDataItemCount = + marketDataItems.find((marketDataItem) => { + return ( + marketDataItem.dataSource === dataSource && + marketDataItem.symbol === symbol + ); + })?._count ?? 0; + const sectorsCount = sectors ? Object.keys(sectors).length : 0; + + return { + assetClass, + assetSubClass, + comment, + currency, + countriesCount, + dataSource, + id, + name, + symbol, + marketDataItemCount, + sectorsCount, + activitiesCount: _count.Order, + date: Order?.[0]?.date, + isUsedByUsersWithSubscription: + await isUsedByUsersWithSubscription, + tags + }; + } + ) + ); - if (presetId) { - if (presetId === 'ETF_WITHOUT_COUNTRIES') { - marketData = marketData.filter(({ countriesCount }) => { - return countriesCount === 0; - }); - } else if (presetId === 'ETF_WITHOUT_SECTORS') { - marketData = marketData.filter(({ sectorsCount }) => { - return sectorsCount === 0; - }); + if (presetId) { + if (presetId === 'ETF_WITHOUT_COUNTRIES') { + marketData = marketData.filter(({ countriesCount }) => { + return countriesCount === 0; + }); + } else if (presetId === 'ETF_WITHOUT_SECTORS') { + marketData = marketData.filter(({ sectorsCount }) => { + return sectorsCount === 0; + }); + } + + count = marketData.length; } - count = marketData.length; - } + return { + count, + marketData + }; + } finally { + await extendedPrismaClient.$disconnect(); - return { - count, - marketData - }; + Logger.debug('Disconnect extended prisma client', 'AdminService'); + } } public async getMarketDataBySymbol({ dataSource, symbol - }: UniqueAsset): Promise { + }: AssetProfileIdentifier): Promise { + let activitiesCount: EnhancedSymbolProfile['activitiesCount'] = 0; + let currency: EnhancedSymbolProfile['currency'] = '-'; + let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; + + if (isCurrency(getCurrencyFromSymbol(symbol))) { + currency = getCurrencyFromSymbol(symbol); + ({ activitiesCount, dateOfFirstActivity } = + await this.orderService.getStatisticsByCurrency(currency)); + } + const [[assetProfile], marketData] = await Promise.all([ this.symbolProfileService.getSymbolProfiles([ { @@ -329,8 +376,11 @@ export class AdminService { return { marketData, assetProfile: assetProfile ?? { - symbol, - currency: '-' + activitiesCount, + currency, + dataSource, + dateOfFirstActivity, + symbol } }; } @@ -342,6 +392,7 @@ export class AdminService { countries, currency, dataSource, + holdings, name, tags, scraperConfiguration, @@ -349,71 +400,38 @@ export class AdminService { symbol, symbolMapping, url - }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { - if (dataSource === 'MANUAL') { - await this.symbolProfileService.updateSymbolProfile({ - assetClass, - assetSubClass, - comment, - countries, - currency, - dataSource, - name, - tags, - scraperConfiguration, - symbol, - sectors, - symbolMapping - }); - } else { - await this.symbolProfileService.updateSymbolProfile({ - comment, - countries, - dataSource, - name, - tags, - scraperConfiguration, - sectors, - symbol, - symbolMapping - }); + }: AssetProfileIdentifier & Prisma.SymbolProfileUpdateInput) { + const symbolProfileOverrides = { + assetClass: assetClass as AssetClass, + assetSubClass: assetSubClass as AssetSubClass, + name: name as string, + url: url as string + }; - let symbolProfileId = - await this.symbolProfileOverwriteService.GetSymbolProfileId( - symbol, - dataSource - ); - if (symbolProfileId) { - await this.symbolProfileOverwriteService.updateSymbolProfileOverrides({ - assetClass, - assetSubClass, - symbolProfileId - }); - } else { - let profiles = await this.symbolProfileService.getSymbolProfiles([ - { - dataSource, - symbol - } - ]); - symbolProfileId = profiles[0].id; - await this.symbolProfileOverwriteService.add({ - SymbolProfile: { - connect: { - dataSource_symbol: { - dataSource, - symbol + const updatedSymbolProfile: AssetProfileIdentifier & + Prisma.SymbolProfileUpdateInput = { + comment, + countries, + currency, + dataSource, + holdings, + scraperConfiguration, + sectors, + symbol, + symbolMapping, + ...(dataSource === 'MANUAL' + ? { assetClass, assetSubClass, name, url } + : { + SymbolProfileOverrides: { + upsert: { + create: symbolProfileOverrides, + update: symbolProfileOverrides } } - } - }); - await this.symbolProfileOverwriteService.updateSymbolProfileOverrides({ - assetClass, - assetSubClass, - symbolProfileId - }); - } - } + }) + }; + + await this.symbolProfileService.updateSymbolProfile(updatedSymbolProfile); const [symbolProfile] = await this.symbolProfileService.getSymbolProfiles([ { @@ -443,37 +461,97 @@ export class AdminService { return response; } + private getExtendedPrismaClient() { + Logger.debug('Connect extended prisma client', 'AdminService'); + + const symbolProfileExtension = Prisma.defineExtension((client) => { + return client.$extends({ + result: { + symbolProfile: { + isUsedByUsersWithSubscription: { + compute: async ({ id }) => { + const { _count } = + await this.prismaService.symbolProfile.findUnique({ + select: { + _count: { + select: { + Order: { + where: { + User: { + Subscription: { + some: { + expiresAt: { + gt: new Date() + } + } + } + } + } + } + } + } + }, + where: { + id + } + }); + + return _count.Order > 0; + } + } + } + } + }); + }); + + return new PrismaClient().$extends(symbolProfileExtension); + } + private async getMarketDataForCurrencies(): Promise { const marketDataItems = await this.prismaService.marketData.groupBy({ _count: true, by: ['dataSource', 'symbol'] }); - const marketData: AdminMarketDataItem[] = this.exchangeRateDataService - .getCurrencyPairs() - .map(({ dataSource, symbol }) => { - const marketDataItemCount = - marketDataItems.find((marketDataItem) => { - return ( - marketDataItem.dataSource === dataSource && - marketDataItem.symbol === symbol - ); - })?._count ?? 0; + const marketDataPromise: Promise[] = + this.exchangeRateDataService + .getCurrencyPairs() + .map(async ({ dataSource, symbol }) => { + let activitiesCount: EnhancedSymbolProfile['activitiesCount'] = 0; + let currency: EnhancedSymbolProfile['currency'] = '-'; + let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; + + if (isCurrency(getCurrencyFromSymbol(symbol))) { + currency = getCurrencyFromSymbol(symbol); + ({ activitiesCount, dateOfFirstActivity } = + await this.orderService.getStatisticsByCurrency(currency)); + } - return { - dataSource, - marketDataItemCount, - symbol, - assetClass: AssetClass.LIQUIDITY, - countriesCount: 0, - currency: symbol.replace(DEFAULT_CURRENCY, ''), - id: undefined, - name: symbol, - sectorsCount: 0, - tags: [] - }; - }); + const marketDataItemCount = + marketDataItems.find((marketDataItem) => { + return ( + marketDataItem.dataSource === dataSource && + marketDataItem.symbol === symbol + ); + })?._count ?? 0; + + return { + activitiesCount, + date: dateOfFirstActivity, + dataSource, + marketDataItemCount, + symbol, + assetClass: AssetClass.LIQUIDITY, + countriesCount: 0, + currency: symbol.replace(DEFAULT_CURRENCY, ''), + id: undefined, + name: symbol, + sectorsCount: 0, + tags: [] + }; + }); + const marketData = await Promise.all(marketDataPromise); return { marketData, count: marketData.length }; } diff --git a/apps/api/src/app/admin/update-asset-profile.dto.ts b/apps/api/src/app/admin/update-asset-profile.dto.ts index 8fe756421..f24b4501a 100644 --- a/apps/api/src/app/admin/update-asset-profile.dto.ts +++ b/apps/api/src/app/admin/update-asset-profile.dto.ts @@ -1,8 +1,9 @@ +import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code'; + import { AssetClass, AssetSubClass, Prisma, Tag } from '@prisma/client'; import { IsArray, IsEnum, - IsISO4217CurrencyCode, IsObject, IsOptional, IsString, @@ -26,7 +27,7 @@ export class UpdateAssetProfileDto { @IsOptional() countries?: Prisma.InputJsonArray; - @IsISO4217CurrencyCode() + @IsCurrencyCode() @IsOptional() currency?: string; diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 67bb9e03c..ca19d63bc 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -25,6 +25,7 @@ import { AccessModule } from './access/access.module'; import { AccountModule } from './account/account.module'; import { AdminModule } from './admin/admin.module'; import { AppController } from './app.controller'; +import { AssetModule } from './asset/asset.module'; import { AuthDeviceModule } from './auth-device/auth-device.module'; import { AuthModule } from './auth/auth.module'; import { BenchmarkModule } from './benchmark/benchmark.module'; @@ -51,6 +52,7 @@ import { UserModule } from './user/user.module'; AdminModule, AccessModule, AccountModule, + AssetModule, AuthDeviceModule, AuthModule, BenchmarkModule, diff --git a/apps/api/src/app/asset/asset.controller.ts b/apps/api/src/app/asset/asset.controller.ts new file mode 100644 index 000000000..828320f82 --- /dev/null +++ b/apps/api/src/app/asset/asset.controller.ts @@ -0,0 +1,29 @@ +import { AdminService } from '@ghostfolio/api/app/admin/admin.service'; +import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; +import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; +import type { AdminMarketDataDetails } from '@ghostfolio/common/interfaces'; + +import { Controller, Get, Param, UseInterceptors } from '@nestjs/common'; +import { DataSource } from '@prisma/client'; +import { pick } from 'lodash'; + +@Controller('asset') +export class AssetController { + public constructor(private readonly adminService: AdminService) {} + + @Get(':dataSource/:symbol') + @UseInterceptors(TransformDataSourceInRequestInterceptor) + @UseInterceptors(TransformDataSourceInResponseInterceptor) + public async getAsset( + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string + ): Promise { + const { assetProfile, marketData } = + await this.adminService.getMarketDataBySymbol({ dataSource, symbol }); + + return { + marketData, + assetProfile: pick(assetProfile, ['dataSource', 'name', 'symbol']) + }; + } +} diff --git a/apps/api/src/app/asset/asset.module.ts b/apps/api/src/app/asset/asset.module.ts new file mode 100644 index 000000000..168585ed8 --- /dev/null +++ b/apps/api/src/app/asset/asset.module.ts @@ -0,0 +1,17 @@ +import { AdminModule } from '@ghostfolio/api/app/admin/admin.module'; +import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; +import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; + +import { Module } from '@nestjs/common'; + +import { AssetController } from './asset.controller'; + +@Module({ + controllers: [AssetController], + imports: [ + AdminModule, + TransformDataSourceInRequestModule, + TransformDataSourceInResponseModule + ] +}) +export class AssetModule {} diff --git a/apps/api/src/app/benchmark/benchmark.controller.ts b/apps/api/src/app/benchmark/benchmark.controller.ts index 7ac0e8c96..66c268b9b 100644 --- a/apps/api/src/app/benchmark/benchmark.controller.ts +++ b/apps/api/src/app/benchmark/benchmark.controller.ts @@ -1,12 +1,12 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; -import { getInterval } from '@ghostfolio/api/helper/portfolio.helper'; import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; +import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import type { + AssetProfileIdentifier, BenchmarkMarketDataDetails, - BenchmarkResponse, - UniqueAsset + BenchmarkResponse } from '@ghostfolio/common/interfaces'; import { permissions } from '@ghostfolio/common/permissions'; import type { DateRange, RequestWithUser } from '@ghostfolio/common/types'; @@ -41,7 +41,9 @@ export class BenchmarkController { @HasPermission(permissions.accessAdminControl) @Post() @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async addBenchmark(@Body() { dataSource, symbol }: UniqueAsset) { + public async addBenchmark( + @Body() { dataSource, symbol }: AssetProfileIdentifier + ) { try { const benchmark = await this.benchmarkService.addBenchmark({ dataSource, @@ -105,19 +107,19 @@ export class BenchmarkController { @Get(':dataSource/:symbol/:startDateString') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseInterceptors(TransformDataSourceInRequestInterceptor) - public async getBenchmarkMarketDataBySymbol( + public async getBenchmarkMarketDataForUser( @Param('dataSource') dataSource: DataSource, @Param('startDateString') startDateString: string, @Param('symbol') symbol: string, @Query('range') dateRange: DateRange = 'max' ): Promise { - const { endDate, startDate } = getInterval( + const { endDate, startDate } = getIntervalFromDateRange( dateRange, new Date(startDateString) ); const userCurrency = this.request.user.Settings.settings.baseCurrency; - return this.benchmarkService.getMarketDataBySymbol({ + return this.benchmarkService.getMarketDataForUser({ dataSource, endDate, startDate, diff --git a/apps/api/src/app/benchmark/benchmark.module.ts b/apps/api/src/app/benchmark/benchmark.module.ts index e7d1e9435..4c5f4d58e 100644 --- a/apps/api/src/app/benchmark/benchmark.module.ts +++ b/apps/api/src/app/benchmark/benchmark.module.ts @@ -2,6 +2,7 @@ import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.mo import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module'; import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { TransformDataSourceInResponseModule } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.module'; +import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; @@ -18,6 +19,7 @@ import { BenchmarkService } from './benchmark.service'; controllers: [BenchmarkController], exports: [BenchmarkService], imports: [ + ConfigurationModule, DataProviderModule, ExchangeRateDataModule, MarketDataModule, diff --git a/apps/api/src/app/benchmark/benchmark.service.spec.ts b/apps/api/src/app/benchmark/benchmark.service.spec.ts index 42a29e6d1..5371fcdc0 100644 --- a/apps/api/src/app/benchmark/benchmark.service.spec.ts +++ b/apps/api/src/app/benchmark/benchmark.service.spec.ts @@ -12,6 +12,7 @@ describe('BenchmarkService', () => { null, null, null, + null, null ); }); diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/app/benchmark/benchmark.service.ts index 6f2047210..169ea8cad 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/app/benchmark/benchmark.service.ts @@ -1,15 +1,13 @@ import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; -import { - MAX_CHART_ITEMS, - PROPERTY_BENCHMARKS -} from '@ghostfolio/common/config'; +import { PROPERTY_BENCHMARKS } from '@ghostfolio/common/config'; import { DATE_FORMAT, calculateBenchmarkTrend, @@ -17,11 +15,11 @@ import { resetHours } from '@ghostfolio/common/helper'; import { + AssetProfileIdentifier, Benchmark, BenchmarkMarketDataDetails, BenchmarkProperty, - BenchmarkResponse, - UniqueAsset + BenchmarkResponse } from '@ghostfolio/common/interfaces'; import { BenchmarkTrend } from '@ghostfolio/common/types'; @@ -29,20 +27,25 @@ import { Injectable, Logger } from '@nestjs/common'; import { SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; import { + addHours, differenceInDays, eachDayOfInterval, format, + isAfter, isSameDay, subDays } from 'date-fns'; import { isNumber, last, uniqBy } from 'lodash'; import ms from 'ms'; +import { BenchmarkValue } from './interfaces/benchmark-value.interface'; + @Injectable() export class BenchmarkService { private readonly CACHE_KEY_BENCHMARKS = 'BENCHMARKS'; public constructor( + private readonly configurationService: ConfigurationService, private readonly dataProviderService: DataProviderService, private readonly exchangeRateDataService: ExchangeRateDataService, private readonly marketDataService: MarketDataService, @@ -61,7 +64,10 @@ export class BenchmarkService { return 0; } - public async getBenchmarkTrends({ dataSource, symbol }: UniqueAsset) { + public async getBenchmarkTrends({ + dataSource, + symbol + }: AssetProfileIdentifier) { const historicalData = await this.marketDataService.marketDataItems({ orderBy: { date: 'desc' @@ -89,94 +95,28 @@ export class BenchmarkService { enableSharing = false, useCache = true } = {}): Promise { - let benchmarks: BenchmarkResponse['benchmarks']; - if (useCache) { try { - benchmarks = JSON.parse( - await this.redisCacheService.get(this.CACHE_KEY_BENCHMARKS) + const cachedBenchmarkValue = await this.redisCacheService.get( + this.CACHE_KEY_BENCHMARKS ); - if (benchmarks) { - return benchmarks; - } - } catch {} - } - - const benchmarkAssetProfiles = await this.getBenchmarkAssetProfiles({ - enableSharing - }); + const { benchmarks, expiration }: BenchmarkValue = + JSON.parse(cachedBenchmarkValue); - const promisesAllTimeHighs: Promise<{ date: Date; marketPrice: number }>[] = - []; - const promisesBenchmarkTrends: Promise<{ - trend50d: BenchmarkTrend; - trend200d: BenchmarkTrend; - }>[] = []; + Logger.debug('Fetched benchmarks from cache', 'BenchmarkService'); - const quotes = await this.dataProviderService.getQuotes({ - items: benchmarkAssetProfiles.map(({ dataSource, symbol }) => { - return { dataSource, symbol }; - }), - requestTimeout: ms('30 seconds'), - useCache: false - }); - - for (const { dataSource, symbol } of benchmarkAssetProfiles) { - promisesAllTimeHighs.push( - this.marketDataService.getMax({ dataSource, symbol }) - ); - promisesBenchmarkTrends.push( - this.getBenchmarkTrends({ dataSource, symbol }) - ); - } - - const [allTimeHighs, benchmarkTrends] = await Promise.all([ - Promise.all(promisesAllTimeHighs), - Promise.all(promisesBenchmarkTrends) - ]); - let storeInCache = true; - - benchmarks = allTimeHighs.map((allTimeHigh, index) => { - const { marketPrice } = - quotes[benchmarkAssetProfiles[index].symbol] ?? {}; - - let performancePercentFromAllTimeHigh = 0; - - if (allTimeHigh?.marketPrice && marketPrice) { - performancePercentFromAllTimeHigh = this.calculateChangeInPercentage( - allTimeHigh.marketPrice, - marketPrice - ); - } else { - storeInCache = false; - } - - return { - marketCondition: this.getMarketCondition( - performancePercentFromAllTimeHigh - ), - name: benchmarkAssetProfiles[index].name, - performances: { - allTimeHigh: { - date: allTimeHigh?.date, - performancePercent: performancePercentFromAllTimeHigh - } - }, - trend50d: benchmarkTrends[index].trend50d, - trend200d: benchmarkTrends[index].trend200d - }; - }); + if (isAfter(new Date(), new Date(expiration))) { + this.calculateAndCacheBenchmarks({ + enableSharing + }); + } - if (storeInCache) { - await this.redisCacheService.set( - this.CACHE_KEY_BENCHMARKS, - JSON.stringify(benchmarks), - ms('2 hours') / 1000 - ); + return benchmarks; + } catch {} } - return benchmarks; + return this.calculateAndCacheBenchmarks({ enableSharing }); } public async getBenchmarkAssetProfiles({ @@ -213,7 +153,7 @@ export class BenchmarkService { .sort((a, b) => a.name.localeCompare(b.name)); } - public async getMarketDataBySymbol({ + public async getMarketDataForUser({ dataSource, endDate = new Date(), startDate, @@ -223,7 +163,7 @@ export class BenchmarkService { endDate?: Date; startDate: Date; userCurrency: string; - } & UniqueAsset): Promise { + } & AssetProfileIdentifier): Promise { const marketData: { date: string; value: number }[] = []; const days = differenceInDays(endDate, startDate) + 1; @@ -232,7 +172,12 @@ export class BenchmarkService { start: startDate, end: endDate }, - { step: Math.round(days / Math.min(days, MAX_CHART_ITEMS)) } + { + step: Math.round( + days / + Math.min(days, this.configurationService.get('MAX_CHART_ITEMS')) + ) + } ).map((date) => { return resetHours(date); }); @@ -343,7 +288,7 @@ export class BenchmarkService { public async addBenchmark({ dataSource, symbol - }: UniqueAsset): Promise> { + }: AssetProfileIdentifier): Promise> { const assetProfile = await this.prismaService.symbolProfile.findFirst({ where: { dataSource, @@ -380,7 +325,7 @@ export class BenchmarkService { public async deleteBenchmark({ dataSource, symbol - }: UniqueAsset): Promise> { + }: AssetProfileIdentifier): Promise> { const assetProfile = await this.prismaService.symbolProfile.findFirst({ where: { dataSource, @@ -414,10 +359,101 @@ export class BenchmarkService { }; } + private async calculateAndCacheBenchmarks({ + enableSharing = false + }): Promise { + Logger.debug('Calculate benchmarks', 'BenchmarkService'); + + const benchmarkAssetProfiles = await this.getBenchmarkAssetProfiles({ + enableSharing + }); + + const promisesAllTimeHighs: Promise<{ date: Date; marketPrice: number }>[] = + []; + const promisesBenchmarkTrends: Promise<{ + trend50d: BenchmarkTrend; + trend200d: BenchmarkTrend; + }>[] = []; + + const quotes = await this.dataProviderService.getQuotes({ + items: benchmarkAssetProfiles.map(({ dataSource, symbol }) => { + return { dataSource, symbol }; + }), + requestTimeout: ms('30 seconds'), + useCache: false + }); + + for (const { dataSource, symbol } of benchmarkAssetProfiles) { + promisesAllTimeHighs.push( + this.marketDataService.getMax({ dataSource, symbol }) + ); + promisesBenchmarkTrends.push( + this.getBenchmarkTrends({ dataSource, symbol }) + ); + } + + const [allTimeHighs, benchmarkTrends] = await Promise.all([ + Promise.all(promisesAllTimeHighs), + Promise.all(promisesBenchmarkTrends) + ]); + let storeInCache = true; + + const benchmarks = allTimeHighs.map((allTimeHigh, index) => { + const { marketPrice } = + quotes[benchmarkAssetProfiles[index].symbol] ?? {}; + + let performancePercentFromAllTimeHigh = 0; + + if (allTimeHigh?.marketPrice && marketPrice) { + performancePercentFromAllTimeHigh = this.calculateChangeInPercentage( + allTimeHigh.marketPrice, + marketPrice + ); + } else { + storeInCache = false; + } + + return { + dataSource: benchmarkAssetProfiles[index].dataSource, + marketCondition: this.getMarketCondition( + performancePercentFromAllTimeHigh + ), + name: benchmarkAssetProfiles[index].name, + performances: { + allTimeHigh: { + date: allTimeHigh?.date, + performancePercent: + performancePercentFromAllTimeHigh >= 0 + ? 0 + : performancePercentFromAllTimeHigh + } + }, + symbol: benchmarkAssetProfiles[index].symbol, + trend50d: benchmarkTrends[index].trend50d, + trend200d: benchmarkTrends[index].trend200d + }; + }); + + if (storeInCache) { + const expiration = addHours(new Date(), 2); + + await this.redisCacheService.set( + this.CACHE_KEY_BENCHMARKS, + JSON.stringify({ + benchmarks, + expiration: expiration.getTime() + }), + ms('12 hours') / 1000 + ); + } + + return benchmarks; + } + private getMarketCondition( aPerformanceInPercent: number ): Benchmark['marketCondition'] { - if (aPerformanceInPercent === 0) { + if (aPerformanceInPercent >= 0) { return 'ALL_TIME_HIGH'; } else if (aPerformanceInPercent <= -0.2) { return 'BEAR_MARKET'; diff --git a/apps/api/src/app/benchmark/interfaces/benchmark-value.interface.ts b/apps/api/src/app/benchmark/interfaces/benchmark-value.interface.ts new file mode 100644 index 000000000..eda302f90 --- /dev/null +++ b/apps/api/src/app/benchmark/interfaces/benchmark-value.interface.ts @@ -0,0 +1,6 @@ +import { BenchmarkResponse } from '@ghostfolio/common/interfaces'; + +export interface BenchmarkValue { + benchmarks: BenchmarkResponse['benchmarks']; + expiration: number; +} diff --git a/apps/api/src/app/cache/cache.controller.ts b/apps/api/src/app/cache/cache.controller.ts index edfd16c49..4d34a2eff 100644 --- a/apps/api/src/app/cache/cache.controller.ts +++ b/apps/api/src/app/cache/cache.controller.ts @@ -14,6 +14,6 @@ export class CacheController { @Post('flush') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async flushCache(): Promise { - return this.redisCacheService.reset(); + await this.redisCacheService.reset(); } } diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 691b0fdea..4dc3a1950 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -13,16 +13,13 @@ import { DataGatheringService } from '@ghostfolio/api/services/data-gathering/da import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; -import { - DATA_GATHERING_QUEUE_PRIORITY_HIGH, - DATA_GATHERING_QUEUE_PRIORITY_MEDIUM -} from '@ghostfolio/common/config'; +import { DATA_GATHERING_QUEUE_PRIORITY_HIGH } from '@ghostfolio/common/config'; import { DATE_FORMAT, getAssetProfileIdentifier, parseDate } from '@ghostfolio/common/helper'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { AccountWithPlatform, OrderWithAccount, @@ -54,7 +51,7 @@ export class ImportService { dataSource, symbol, userCurrency - }: UniqueAsset & { userCurrency: string }): Promise { + }: AssetProfileIdentifier & { userCurrency: string }): Promise { try { const { firstBuyDate, historicalData, orders } = await this.portfolioService.getPosition(dataSource, undefined, symbol); @@ -75,66 +72,74 @@ export class ImportService { }) ]); - const accounts = orders.map((order) => { - return order.Account; - }); + const accounts = orders + .filter(({ Account }) => { + return !!Account; + }) + .map(({ Account }) => { + return Account; + }); const Account = this.isUniqueAccount(accounts) ? accounts[0] : undefined; - return Object.entries(dividends).map(([dateString, { marketPrice }]) => { - const quantity = - historicalData.find((historicalDataItem) => { - return historicalDataItem.date === dateString; - })?.quantity ?? 0; - - const value = new Big(quantity).mul(marketPrice).toNumber(); - - const date = parseDate(dateString); - const isDuplicate = orders.some((activity) => { - return ( - activity.accountId === Account?.id && - activity.SymbolProfile.currency === assetProfile.currency && - activity.SymbolProfile.dataSource === assetProfile.dataSource && - isSameSecond(activity.date, date) && - activity.quantity === quantity && - activity.SymbolProfile.symbol === assetProfile.symbol && - activity.type === 'DIVIDEND' && - activity.unitPrice === marketPrice - ); - }); + return await Promise.all( + Object.entries(dividends).map(async ([dateString, { marketPrice }]) => { + const quantity = + historicalData.find((historicalDataItem) => { + return historicalDataItem.date === dateString; + })?.quantity ?? 0; + + const value = new Big(quantity).mul(marketPrice).toNumber(); + + const date = parseDate(dateString); + const isDuplicate = orders.some((activity) => { + return ( + activity.accountId === Account?.id && + activity.SymbolProfile.currency === assetProfile.currency && + activity.SymbolProfile.dataSource === assetProfile.dataSource && + isSameSecond(activity.date, date) && + activity.quantity === quantity && + activity.SymbolProfile.symbol === assetProfile.symbol && + activity.type === 'DIVIDEND' && + activity.unitPrice === marketPrice + ); + }); - const error: ActivityError = isDuplicate - ? { code: 'IS_DUPLICATE' } - : undefined; + const error: ActivityError = isDuplicate + ? { code: 'IS_DUPLICATE' } + : undefined; - return { - Account, - date, - error, - quantity, - value, - accountId: Account?.id, - accountUserId: undefined, - comment: undefined, - currency: undefined, - createdAt: undefined, - fee: 0, - feeInBaseCurrency: 0, - id: assetProfile.id, - isDraft: false, - SymbolProfile: assetProfile, - symbolProfileId: assetProfile.id, - type: 'DIVIDEND', - unitPrice: marketPrice, - updatedAt: undefined, - userId: Account?.userId, - valueInBaseCurrency: this.exchangeRateDataService.toCurrency( + return { + Account, + date, + error, + quantity, value, - assetProfile.currency, - userCurrency - ) - }; - }); + accountId: Account?.id, + accountUserId: undefined, + comment: undefined, + currency: undefined, + createdAt: undefined, + fee: 0, + feeInBaseCurrency: 0, + id: assetProfile.id, + isDraft: false, + SymbolProfile: assetProfile, + symbolProfileId: assetProfile.id, + type: 'DIVIDEND', + unitPrice: marketPrice, + updatedAt: undefined, + userId: Account?.userId, + valueInBaseCurrency: + await this.exchangeRateDataService.toCurrencyAtDate( + value, + assetProfile.currency, + userCurrency, + date + ) + }; + }) + ); } catch { return []; } @@ -295,6 +300,7 @@ export class ImportService { figi, figiComposite, figiShareClass, + holdings, id, isin, name, @@ -367,6 +373,7 @@ export class ImportService { figi, figiComposite, figiShareClass, + holdings, id, isin, name, @@ -429,18 +436,21 @@ export class ImportService { ...order, error, value, - feeInBaseCurrency: this.exchangeRateDataService.toCurrency( + feeInBaseCurrency: await this.exchangeRateDataService.toCurrencyAtDate( fee, assetProfile.currency, - userCurrency + userCurrency, + date ), // @ts-ignore SymbolProfile: assetProfile, - valueInBaseCurrency: this.exchangeRateDataService.toCurrency( - value, - assetProfile.currency, - userCurrency - ) + valueInBaseCurrency: + await this.exchangeRateDataService.toCurrencyAtDate( + value, + assetProfile.currency, + userCurrency, + date + ) }); } @@ -538,6 +548,7 @@ export class ImportService { assetSubClass: undefined, countries: undefined, createdAt: undefined, + holdings: undefined, id: undefined, sectors: undefined, updatedAt: undefined diff --git a/apps/api/src/app/info/info.module.ts b/apps/api/src/app/info/info.module.ts index ba58bc36f..473a966ad 100644 --- a/apps/api/src/app/info/info.module.ts +++ b/apps/api/src/app/info/info.module.ts @@ -7,7 +7,6 @@ import { ConfigurationModule } from '@ghostfolio/api/services/configuration/conf import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering/data-gathering.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; -import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; diff --git a/apps/api/src/app/logo/logo.service.ts b/apps/api/src/app/logo/logo.service.ts index a944900a0..908921a19 100644 --- a/apps/api/src/app/logo/logo.service.ts +++ b/apps/api/src/app/logo/logo.service.ts @@ -1,6 +1,6 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { HttpException, Injectable } from '@nestjs/common'; import { DataSource } from '@prisma/client'; @@ -17,7 +17,7 @@ export class LogoService { public async getLogoByDataSourceAndSymbol({ dataSource, symbol - }: UniqueAsset) { + }: AssetProfileIdentifier) { if (!DataSource[dataSource]) { throw new HttpException( getReasonPhrase(StatusCodes.NOT_FOUND), diff --git a/apps/api/src/app/order/create-order.dto.ts b/apps/api/src/app/order/create-order.dto.ts index 6d36f036a..6f52e7032 100644 --- a/apps/api/src/app/order/create-order.dto.ts +++ b/apps/api/src/app/order/create-order.dto.ts @@ -1,3 +1,6 @@ +import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code'; +import { IsAfter1970Constraint } from '@ghostfolio/common/validator-constraints/is-after-1970'; + import { AssetClass, AssetSubClass, @@ -10,12 +13,12 @@ import { IsArray, IsBoolean, IsEnum, - IsISO4217CurrencyCode, IsISO8601, IsNumber, IsOptional, IsString, - Min + Min, + Validate } from 'class-validator'; import { isString } from 'lodash'; @@ -39,10 +42,10 @@ export class CreateOrderDto { ) comment?: string; - @IsISO4217CurrencyCode() + @IsCurrencyCode() currency: string; - @IsISO4217CurrencyCode() + @IsCurrencyCode() @IsOptional() customCurrency?: string; @@ -51,6 +54,7 @@ export class CreateOrderDto { dataSource?: DataSource; @IsISO8601() + @Validate(IsAfter1970Constraint) date: string; @IsNumber() diff --git a/apps/api/src/app/order/order.controller.ts b/apps/api/src/app/order/order.controller.ts index f3709abae..7a9cf3d17 100644 --- a/apps/api/src/app/order/order.controller.ts +++ b/apps/api/src/app/order/order.controller.ts @@ -1,12 +1,12 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; -import { getInterval } from '@ghostfolio/api/helper/portfolio.helper'; import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response/redact-values-in-response.interceptor'; import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { DataGatheringService } from '@ghostfolio/api/services/data-gathering/data-gathering.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; +import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import { DATA_GATHERING_QUEUE_PRIORITY_HIGH, HEADER_KEY_IMPERSONATION @@ -36,7 +36,7 @@ import { parseISO } from 'date-fns'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { CreateOrderDto } from './create-order.dto'; -import { Activities } from './interfaces/activities.interface'; +import { Activities, Activity } from './interfaces/activities.interface'; import { OrderService } from './order.service'; import { UpdateOrderDto } from './update-order.dto'; @@ -66,7 +66,6 @@ export class OrderController { return this.orderService.deleteOrders({ filters, - userCurrency: this.request.user.Settings.settings.baseCurrency, userId: this.request.user.id }); } @@ -111,7 +110,7 @@ export class OrderController { let startDate: Date; if (dateRange) { - ({ endDate, startDate } = getInterval(dateRange)); + ({ endDate, startDate } = getIntervalFromDateRange(dateRange)); } const filters = this.apiService.buildFiltersFromQueryParams({ @@ -141,6 +140,38 @@ export class OrderController { return { activities, count }; } + @Get(':id') + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + @UseInterceptors(RedactValuesInResponseInterceptor) + @UseInterceptors(TransformDataSourceInResponseInterceptor) + public async getOrderById( + @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId, + @Param('id') id: string + ): Promise { + const impersonationUserId = + await this.impersonationService.validateImpersonationId(impersonationId); + const userCurrency = this.request.user.Settings.settings.baseCurrency; + + const { activities } = await this.orderService.getOrders({ + userCurrency, + userId: impersonationUserId || this.request.user.id, + withExcludedAccounts: true + }); + + const activity = activities.find((activity) => { + return activity.id === id; + }); + + if (!activity) { + throw new HttpException( + getReasonPhrase(StatusCodes.NOT_FOUND), + StatusCodes.NOT_FOUND + ); + } + + return activity; + } + @HasPermission(permissions.createOrder) @Post() @UseGuards(AuthGuard('jwt'), HasPermissionGuard) diff --git a/apps/api/src/app/order/order.service.ts b/apps/api/src/app/order/order.service.ts index 9949f7b1b..83196f89b 100644 --- a/apps/api/src/app/order/order.service.ts +++ b/apps/api/src/app/order/order.service.ts @@ -11,7 +11,11 @@ import { GATHER_ASSET_PROFILE_PROCESS_OPTIONS } from '@ghostfolio/common/config'; import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; -import { Filter, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + EnhancedSymbolProfile, + Filter +} from '@ghostfolio/common/interfaces'; import { OrderWithAccount } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; @@ -43,6 +47,39 @@ export class OrderService { private readonly symbolProfileService: SymbolProfileService ) {} + public async assignTags({ + dataSource, + symbol, + tags, + userId + }: { tags: Tag[]; userId: string } & AssetProfileIdentifier) { + const orders = await this.prismaService.order.findMany({ + where: { + userId, + SymbolProfile: { + dataSource, + symbol + } + } + }); + + return Promise.all( + orders.map(({ id }) => + this.prismaService.order.update({ + data: { + tags: { + // The set operation replaces all existing connections with the provided ones + set: tags.map(({ id }) => { + return { id }; + }) + } + }, + where: { id } + }) + ) + ); + } + public async createOrder( data: Prisma.OrderCreateInput & { accountId?: string; @@ -181,7 +218,15 @@ export class OrderService { where }); - if (['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(order.type)) { + const [symbolProfile] = + await this.symbolProfileService.getSymbolProfilesByIds([ + order.symbolProfileId + ]); + + if ( + ['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(order.type) || + symbolProfile.activitiesCount === 0 + ) { await this.symbolProfileService.deleteById(order.symbolProfileId); } @@ -197,18 +242,16 @@ export class OrderService { public async deleteOrders({ filters, - userCurrency, userId }: { filters?: Filter[]; - userCurrency: string; userId: string; }): Promise { const { activities } = await this.getOrders({ filters, userId, - userCurrency, includeDrafts: true, + userCurrency: undefined, withExcludedAccounts: true }); @@ -222,6 +265,19 @@ export class OrderService { } }); + const symbolProfiles = + await this.symbolProfileService.getSymbolProfilesByIds( + activities.map(({ symbolProfileId }) => { + return symbolProfileId; + }) + ); + + for (const { activitiesCount, id } of symbolProfiles) { + if (activitiesCount === 0) { + await this.symbolProfileService.deleteById(id); + } + } + this.eventEmitter.emit( PortfolioChangedEvent.getName(), new PortfolioChangedEvent({ userId }) @@ -230,7 +286,7 @@ export class OrderService { return count; } - public async getLatestOrder({ dataSource, symbol }: UniqueAsset) { + public async getLatestOrder({ dataSource, symbol }: AssetProfileIdentifier) { return this.prismaService.order.findFirst({ orderBy: { date: 'desc' @@ -270,7 +326,8 @@ export class OrderService { withExcludedAccounts?: boolean; }): Promise { let orderBy: Prisma.Enumerable = [ - { date: 'asc' } + { date: 'asc' }, + { id: 'asc' } ]; const where: Prisma.OrderWhereInput = { userId }; @@ -290,10 +347,14 @@ export class OrderService { ACCOUNT: filtersByAccount, ASSET_CLASS: filtersByAssetClass, TAG: filtersByTag - } = groupBy(filters, (filter) => { - return filter.type; + } = groupBy(filters, ({ type }) => { + return type; }); + const searchQuery = filters?.find(({ type }) => { + return type === 'SEARCH_QUERY'; + })?.id; + if (filtersByAccount?.length > 0) { where.accountId = { in: filtersByAccount.map(({ id }) => { @@ -335,6 +396,30 @@ export class OrderService { }; } + if (searchQuery) { + const searchQueryWhereInput: Prisma.SymbolProfileWhereInput[] = [ + { id: { mode: 'insensitive', startsWith: searchQuery } }, + { isin: { mode: 'insensitive', startsWith: searchQuery } }, + { name: { mode: 'insensitive', startsWith: searchQuery } }, + { symbol: { mode: 'insensitive', startsWith: searchQuery } } + ]; + + if (where.SymbolProfile) { + where.SymbolProfile = { + AND: [ + where.SymbolProfile, + { + OR: searchQueryWhereInput + } + ] + }; + } else { + where.SymbolProfile = { + OR: searchQueryWhereInput + }; + } + } + if (filtersByTag?.length > 0) { where.AND = [ { @@ -367,7 +452,7 @@ export class OrderService { } if (sortColumn) { - orderBy = [{ [sortColumn]: sortDirection }]; + orderBy = [{ [sortColumn]: sortDirection }, { id: sortDirection }]; } if (types) { @@ -406,7 +491,7 @@ export class OrderService { this.prismaService.order.count({ where }) ]); - const uniqueAssets = uniqBy( + const assetProfileIdentifiers = uniqBy( orders.map(({ SymbolProfile }) => { return { dataSource: SymbolProfile.dataSource, @@ -421,41 +506,83 @@ export class OrderService { } ); - const assetProfiles = - await this.symbolProfileService.getSymbolProfiles(uniqueAssets); + const assetProfiles = await this.symbolProfileService.getSymbolProfiles( + assetProfileIdentifiers + ); - const activities = orders.map((order) => { - const assetProfile = assetProfiles.find(({ dataSource, symbol }) => { - return ( - dataSource === order.SymbolProfile.dataSource && - symbol === order.SymbolProfile.symbol - ); - }); + const activities = await Promise.all( + orders.map(async (order) => { + const assetProfile = assetProfiles.find(({ dataSource, symbol }) => { + return ( + dataSource === order.SymbolProfile.dataSource && + symbol === order.SymbolProfile.symbol + ); + }); - const value = new Big(order.quantity).mul(order.unitPrice).toNumber(); - - return { - ...order, - value, - // TODO: Use exchange rate of date - feeInBaseCurrency: this.exchangeRateDataService.toCurrency( - order.fee, - order.SymbolProfile.currency, - userCurrency - ), - SymbolProfile: assetProfile, - // TODO: Use exchange rate of date - valueInBaseCurrency: this.exchangeRateDataService.toCurrency( + const value = new Big(order.quantity).mul(order.unitPrice).toNumber(); + + return { + ...order, value, - order.SymbolProfile.currency, - userCurrency - ) - }; - }); + feeInBaseCurrency: + await this.exchangeRateDataService.toCurrencyAtDate( + order.fee, + order.SymbolProfile.currency, + userCurrency, + order.date + ), + SymbolProfile: assetProfile, + valueInBaseCurrency: + await this.exchangeRateDataService.toCurrencyAtDate( + value, + order.SymbolProfile.currency, + userCurrency, + order.date + ) + }; + }) + ); return { activities, count }; } + public async getOrdersForPortfolioCalculator({ + filters, + userCurrency, + userId + }: { + filters?: Filter[]; + userCurrency: string; + userId: string; + }) { + return this.getOrders({ + filters, + userCurrency, + userId, + withExcludedAccounts: false // TODO + }); + } + + public async getStatisticsByCurrency( + currency: EnhancedSymbolProfile['currency'] + ): Promise<{ + activitiesCount: EnhancedSymbolProfile['activitiesCount']; + dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; + }> { + const { _count, _min } = await this.prismaService.order.aggregate({ + _count: true, + _min: { + date: true + }, + where: { SymbolProfile: { currency } } + }); + + return { + activitiesCount: _count as number, + dateOfFirstActivity: _min.date + }; + } + public async order( orderWhereUniqueInput: Prisma.OrderWhereUniqueInput ): Promise { diff --git a/apps/api/src/app/order/update-order.dto.ts b/apps/api/src/app/order/update-order.dto.ts index be3c2b6e5..eabd1f418 100644 --- a/apps/api/src/app/order/update-order.dto.ts +++ b/apps/api/src/app/order/update-order.dto.ts @@ -1,3 +1,6 @@ +import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code'; +import { IsAfter1970Constraint } from '@ghostfolio/common/validator-constraints/is-after-1970'; + import { AssetClass, AssetSubClass, @@ -9,12 +12,12 @@ import { Transform, TransformFnParams } from 'class-transformer'; import { IsArray, IsEnum, - IsISO4217CurrencyCode, IsISO8601, IsNumber, IsOptional, IsString, - Min + Min, + Validate } from 'class-validator'; import { isString } from 'lodash'; @@ -38,10 +41,10 @@ export class UpdateOrderDto { ) comment?: string; - @IsISO4217CurrencyCode() + @IsCurrencyCode() currency: string; - @IsISO4217CurrencyCode() + @IsCurrencyCode() @IsOptional() customCurrency?: string; @@ -49,6 +52,7 @@ export class UpdateOrderDto { dataSource: DataSource; @IsISO8601() + @Validate(IsAfter1970Constraint) date: string; @IsNumber() diff --git a/apps/api/src/app/portfolio/calculator/constantPortfolioReturn/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/constantPortfolioReturn/portfolio-calculator.ts index 920321bd5..88ff11b47 100644 --- a/apps/api/src/app/portfolio/calculator/constantPortfolioReturn/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/constantPortfolioReturn/portfolio-calculator.ts @@ -2,16 +2,13 @@ import { LogPerformance } from '@ghostfolio/api/aop/logging.interceptor'; import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; -import { - getFactor, - getInterval -} from '@ghostfolio/api/helper/portfolio.helper'; +import { getFactor } from '@ghostfolio/api/helper/portfolio.helper'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { IDataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces'; -import { MAX_CHART_ITEMS } from '@ghostfolio/common/config'; +import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import { DATE_FORMAT, parseDate, resetHours } from '@ghostfolio/common/helper'; -import { HistoricalDataItem } from '@ghostfolio/common/interfaces'; +import { Filter, HistoricalDataItem } from '@ghostfolio/common/interfaces'; import { DateRange } from '@ghostfolio/common/types'; import { Inject, Logger } from '@nestjs/common'; @@ -43,21 +40,19 @@ export class CPRPortfolioCalculator extends TWRPortfolioCalculator { configurationService, currency, currentRateService, - dateRange, exchangeRateDataService, redisCacheService, - useCache, - userId + userId, + filters }: { accountBalanceItems: HistoricalDataItem[]; activities: Activity[]; configurationService: ConfigurationService; currency: string; currentRateService: CurrentRateService; - dateRange: DateRange; exchangeRateDataService: ExchangeRateDataService; redisCacheService: RedisCacheService; - useCache: boolean; + filters: Filter[]; userId: string; }, @Inject() @@ -68,11 +63,10 @@ export class CPRPortfolioCalculator extends TWRPortfolioCalculator { activities, configurationService, currency, + filters, currentRateService, - dateRange, exchangeRateDataService, redisCacheService, - useCache, userId }); } @@ -87,23 +81,31 @@ export class CPRPortfolioCalculator extends TWRPortfolioCalculator { withDataDecimation?: boolean; withTimeWeightedReturn?: boolean; }): Promise { - const { endDate, startDate } = getInterval(dateRange, this.getStartDate()); + const { endDate, startDate } = getIntervalFromDateRange( + dateRange, + this.getStartDate() + ); const daysInMarket = differenceInDays(endDate, startDate) + 1; const step = withDataDecimation - ? Math.round(daysInMarket / Math.min(daysInMarket, MAX_CHART_ITEMS)) + ? Math.round( + daysInMarket / + Math.min( + daysInMarket, + this.configurationService.get('MAX_CHART_ITEMS') + ) + ) : 1; - let item = super.getChartData({ - step, + let item = await super.getPerformance({ end: endDate, start: startDate }); if (!withTimeWeightedReturn) { - return item; + return item.chart; } else { - let itemResult = await item; + let itemResult = item.chart; let dates = itemResult.map((item) => parseDate(item.date)); let timeWeighted = await this.getTimeWeightedChartData({ dates @@ -145,13 +147,14 @@ export class CPRPortfolioCalculator extends TWRPortfolioCalculator { const end = new Date(Date.now()); const holdings = await this.getHoldings(orders, parseDate(start), end); - const marketMap = await this.currentRateService.getToday( - this.mapToDataGatheringItems(orders) - ); + const marketMap = await this.currentRateService.getValues({ + dataGatheringItems: this.mapToDataGatheringItems(orders), + dateQuery: { in: [end] } + }); const endString = format(end, DATE_FORMAT); let exchangeRates = await Promise.all( Object.keys(holdings[endString]).map(async (holding) => { - let symbol = marketMap.find((m) => m.symbol === holding); + let symbol = marketMap.values.find((m) => m.symbol === holding); let symbolCurrency = this.getCurrencyFromActivities(orders, holding); let exchangeRate = await this.exchangeRateDataService.toCurrencyAtDate( 1, @@ -175,7 +178,7 @@ export class CPRPortfolioCalculator extends TWRPortfolioCalculator { if (!holdings[endString][holding].toNumber()) { return sum; } - let symbol = marketMap.find((m) => m.symbol === holding); + let symbol = marketMap.values.find((m) => m.symbol === holding); if (symbol?.marketPrice === undefined) { Logger.warn( diff --git a/apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts index 5d168b619..eb49b7cdb 100644 --- a/apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts @@ -1,5 +1,8 @@ import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator'; -import { SymbolMetrics, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + SymbolMetrics +} from '@ghostfolio/common/interfaces'; import { PortfolioSnapshot, TimelinePosition } from '@ghostfolio/common/models'; export class MWRPortfolioCalculator extends PortfolioCalculator { @@ -13,7 +16,6 @@ export class MWRPortfolioCalculator extends PortfolioCalculator { dataSource, end, exchangeRates, - isChartMode = false, marketSymbolMap, start, step = 1, @@ -21,13 +23,12 @@ export class MWRPortfolioCalculator extends PortfolioCalculator { }: { end: Date; exchangeRates: { [dateString: string]: number }; - isChartMode?: boolean; marketSymbolMap: { [date: string]: { [symbol: string]: Big }; }; start: Date; step?: number; - } & UniqueAsset): SymbolMetrics { + } & AssetProfileIdentifier): SymbolMetrics { throw new Error('Method not implemented.'); } } diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts index 51ad40c31..d458be708 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts @@ -20,6 +20,7 @@ export const symbolProfileDummyData = { assetSubClass: undefined, countries: [], createdAt: undefined, + holdings: [], id: undefined, sectors: [], updatedAt: undefined diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts index dad633dd7..a43d9b3e6 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts @@ -4,8 +4,7 @@ import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.s import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; -import { HistoricalDataItem } from '@ghostfolio/common/interfaces'; -import { DateRange, UserWithSettings } from '@ghostfolio/common/types'; +import { Filter, HistoricalDataItem } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; @@ -37,30 +36,23 @@ export class PortfolioCalculatorFactory { activities, calculationType, currency, - dateRange = 'max', - hasFilters, - isExperimentalFeatures = false, + filters = [], userId }: { accountBalanceItems?: HistoricalDataItem[]; activities: Activity[]; calculationType: PerformanceCalculationType; currency: string; - dateRange?: DateRange; - hasFilters: boolean; - isExperimentalFeatures?: boolean; + filters?: Filter[]; userId: string; }): PortfolioCalculator { - const useCache = !hasFilters && isExperimentalFeatures; - switch (calculationType) { case PerformanceCalculationType.MWR: return new MWRPortfolioCalculator({ accountBalanceItems, activities, currency, - dateRange, - useCache, + filters, userId, configurationService: this.configurationService, currentRateService: this.currentRateService, @@ -74,12 +66,11 @@ export class PortfolioCalculatorFactory { activities, currency, currentRateService: this.currentRateService, - dateRange, - useCache, userId, configurationService: this.configurationService, exchangeRateDataService: this.exchangeRateDataService, - redisCacheService: this.redisCacheService + redisCacheService: this.redisCacheService, + filters }, this.orderservice ); @@ -90,12 +81,11 @@ export class PortfolioCalculatorFactory { activities, currency, currentRateService: this.currentRateService, - dateRange, - useCache, userId, configurationService: this.configurationService, exchangeRateDataService: this.exchangeRateDataService, - redisCacheService: this.redisCacheService + redisCacheService: this.redisCacheService, + filters }, this.orderservice ); diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index 58985198d..a3d490252 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -5,14 +5,11 @@ import { PortfolioOrder } from '@ghostfolio/api/app/portfolio/interfaces/portfol import { TransactionPointSymbol } from '@ghostfolio/api/app/portfolio/interfaces/transaction-point-symbol.interface'; import { TransactionPoint } from '@ghostfolio/api/app/portfolio/interfaces/transaction-point.interface'; import { RedisCacheService } from '@ghostfolio/api/app/redis-cache/redis-cache.service'; -import { - getFactor, - getInterval -} from '@ghostfolio/api/helper/portfolio.helper'; +import { getFactor } from '@ghostfolio/api/helper/portfolio.helper'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { IDataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces'; -import { MAX_CHART_ITEMS } from '@ghostfolio/common/config'; +import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import { DATE_FORMAT, getSum, @@ -20,15 +17,16 @@ import { resetHours } from '@ghostfolio/common/helper'; import { + AssetProfileIdentifier, DataProviderInfo, + Filter, HistoricalDataItem, InvestmentItem, ResponseError, - SymbolMetrics, - UniqueAsset + SymbolMetrics } from '@ghostfolio/common/interfaces'; import { PortfolioSnapshot, TimelinePosition } from '@ghostfolio/common/models'; -import { DateRange, GroupBy } from '@ghostfolio/common/types'; +import { GroupBy } from '@ghostfolio/common/types'; import { Logger } from '@nestjs/common'; import { Big } from 'big.js'; @@ -40,12 +38,10 @@ import { format, isAfter, isBefore, - isSameDay, - max, min, subDays } from 'date-fns'; -import { first, last, uniq, uniqBy } from 'lodash'; +import { first, isNumber, last, sortBy, sum, uniq, uniqBy } from 'lodash'; export abstract class PortfolioCalculator { protected static readonly ENABLE_LOGGING = false; @@ -53,19 +49,18 @@ export abstract class PortfolioCalculator { protected accountBalanceItems: HistoricalDataItem[]; protected activities: PortfolioOrder[]; - private configurationService: ConfigurationService; + protected configurationService: ConfigurationService; protected currency: string; protected currentRateService: CurrentRateService; private dataProviderInfos: DataProviderInfo[]; - private dateRange: DateRange; private endDate: Date; protected exchangeRateDataService: ExchangeRateDataService; + private filters: Filter[]; private redisCacheService: RedisCacheService; private snapshot: PortfolioSnapshot; private snapshotPromise: Promise; private startDate: Date; private transactionPoints: TransactionPoint[]; - private useCache: boolean; protected userId: string; protected marketMap: { [date: string]: { [symbol: string]: Big } } = {}; @@ -75,10 +70,9 @@ export abstract class PortfolioCalculator { configurationService, currency, currentRateService, - dateRange, exchangeRateDataService, + filters, redisCacheService, - useCache, userId }: { accountBalanceItems: HistoricalDataItem[]; @@ -86,18 +80,19 @@ export abstract class PortfolioCalculator { configurationService: ConfigurationService; currency: string; currentRateService: CurrentRateService; - dateRange: DateRange; exchangeRateDataService: ExchangeRateDataService; + filters: Filter[]; redisCacheService: RedisCacheService; - useCache: boolean; userId: string; }) { this.accountBalanceItems = accountBalanceItems; this.configurationService = configurationService; this.currency = currency; this.currentRateService = currentRateService; - this.dateRange = dateRange; this.exchangeRateDataService = exchangeRateDataService; + this.filters = filters; + + let dateOfFirstActivity = new Date(); this.activities = activities .map( @@ -110,10 +105,14 @@ export abstract class PortfolioCalculator { type, unitPrice }) => { - if (isAfter(date, new Date(Date.now()))) { + if (isBefore(date, dateOfFirstActivity)) { + dateOfFirstActivity = date; + } + + if (isAfter(date, new Date())) { // Adapt date to today if activity is in future (e.g. liability) // to include it in the interval - date = endOfDay(new Date(Date.now())); + date = endOfDay(new Date()); } return { @@ -132,10 +131,12 @@ export abstract class PortfolioCalculator { }); this.redisCacheService = redisCacheService; - this.useCache = useCache; this.userId = userId; - const { endDate, startDate } = getInterval(dateRange); + const { endDate, startDate } = getIntervalFromDateRange( + 'max', + subDays(dateOfFirstActivity, 1) + ); this.endDate = endDate; this.startDate = startDate; @@ -150,38 +151,18 @@ export abstract class PortfolioCalculator { ): PortfolioSnapshot; @LogPerformance - public async computeSnapshot( - start: Date, - end?: Date - ): Promise { + protected async computeSnapshot(): Promise { const lastTransactionPoint = last(this.transactionPoints); - let endDate = end; - - if (!endDate) { - endDate = new Date(Date.now()); - - if (lastTransactionPoint) { - endDate = max([endDate, parseDate(lastTransactionPoint.date)]); - } - } - const transactionPoints = this.transactionPoints?.filter(({ date }) => { - return isBefore(parseDate(date), endDate); + return isBefore(parseDate(date), this.endDate); }); if (!transactionPoints.length) { return { currentValueInBaseCurrency: new Big(0), - grossPerformance: new Big(0), - grossPerformancePercentage: new Big(0), - grossPerformancePercentageWithCurrencyEffect: new Big(0), - grossPerformanceWithCurrencyEffect: new Big(0), hasErrors: false, - netPerformance: new Big(0), - netPerformancePercentage: new Big(0), - netPerformancePercentageWithCurrencyEffect: new Big(0), - netPerformanceWithCurrencyEffect: new Big(0), + historicalData: [], positions: [], totalFeesWithCurrencyEffect: new Big(0), totalInterestWithCurrencyEffect: new Big(0), @@ -194,15 +175,12 @@ export abstract class PortfolioCalculator { const currencies: { [symbol: string]: string } = {}; const dataGatheringItems: IDataGatheringItem[] = []; - let dates: Date[] = []; let firstIndex = transactionPoints.length; let firstTransactionPoint: TransactionPoint = null; let totalInterestWithCurrencyEffect = new Big(0); let totalLiabilitiesWithCurrencyEffect = new Big(0); let totalValuablesWithCurrencyEffect = new Big(0); - dates.push(resetHours(start)); - for (const { currency, dataSource, symbol } of transactionPoints[ firstIndex - 1 ].items) { @@ -216,47 +194,19 @@ export abstract class PortfolioCalculator { for (let i = 0; i < transactionPoints.length; i++) { if ( - !isBefore(parseDate(transactionPoints[i].date), start) && + !isBefore(parseDate(transactionPoints[i].date), this.startDate) && firstTransactionPoint === null ) { firstTransactionPoint = transactionPoints[i]; firstIndex = i; } - - if (firstTransactionPoint !== null) { - dates.push(resetHours(parseDate(transactionPoints[i].date))); - } } - dates.push(resetHours(endDate)); - - // Add dates of last week for fallback - dates.push(subDays(resetHours(new Date()), 7)); - dates.push(subDays(resetHours(new Date()), 6)); - dates.push(subDays(resetHours(new Date()), 5)); - dates.push(subDays(resetHours(new Date()), 4)); - dates.push(subDays(resetHours(new Date()), 3)); - dates.push(subDays(resetHours(new Date()), 2)); - dates.push(subDays(resetHours(new Date()), 1)); - dates.push(resetHours(new Date())); - - dates = uniq( - dates.map((date) => { - return date.getTime(); - }) - ) - .map((timestamp) => { - return new Date(timestamp); - }) - .sort((a, b) => { - return a.getTime() - b.getTime(); - }); - let exchangeRatesByCurrency = await this.exchangeRateDataService.getExchangeRatesByCurrency({ currencies: uniq(Object.values(currencies)), - endDate: endOfDay(endDate), - startDate: this.getStartDate(), + endDate: endOfDay(this.endDate), + startDate: this.startDate, targetCurrency: this.currency }); @@ -267,7 +217,8 @@ export abstract class PortfolioCalculator { } = await this.currentRateService.getValues({ dataGatheringItems, dateQuery: { - in: dates + gte: this.startDate, + lt: this.endDate } }); @@ -291,9 +242,25 @@ export abstract class PortfolioCalculator { } } - this.marketMap = marketSymbolMap; + const endDateString = format(this.endDate, DATE_FORMAT); + + const daysInMarket = differenceInDays(this.endDate, this.startDate); - const endDateString = format(endDate, DATE_FORMAT); + let chartDateMap = this.getChartDateMap({ + endDate: this.endDate, + startDate: this.startDate, + step: Math.round( + daysInMarket / + Math.min( + daysInMarket, + this.configurationService.get('MAX_CHART_ITEMS') + ) + ) + }); + + const chartDates = sortBy(Object.keys(chartDateMap), (chartDate) => { + return chartDate; + }); if (firstIndex > 0) { firstIndex--; @@ -304,7 +271,42 @@ export abstract class PortfolioCalculator { const errors: ResponseError['errors'] = []; + const accumulatedValuesByDate: { + [date: string]: { + investmentValueWithCurrencyEffect: Big; + totalAccountBalanceWithCurrencyEffect: Big; + totalCurrentValue: Big; + totalCurrentValueWithCurrencyEffect: Big; + totalInvestmentValue: Big; + totalInvestmentValueWithCurrencyEffect: Big; + totalNetPerformanceValue: Big; + totalNetPerformanceValueWithCurrencyEffect: Big; + totalTimeWeightedInvestmentValue: Big; + totalTimeWeightedInvestmentValueWithCurrencyEffect: Big; + }; + } = {}; + + const valuesBySymbol: { + [symbol: string]: { + currentValues: { [date: string]: Big }; + currentValuesWithCurrencyEffect: { [date: string]: Big }; + investmentValuesAccumulated: { [date: string]: Big }; + investmentValuesAccumulatedWithCurrencyEffect: { [date: string]: Big }; + investmentValuesWithCurrencyEffect: { [date: string]: Big }; + netPerformanceValues: { [date: string]: Big }; + netPerformanceValuesWithCurrencyEffect: { [date: string]: Big }; + timeWeightedInvestmentValues: { [date: string]: Big }; + timeWeightedInvestmentValuesWithCurrencyEffect: { [date: string]: Big }; + }; + } = {}; + for (const item of lastTransactionPoint.items) { + const feeInBaseCurrency = item.fee.mul( + exchangeRatesByCurrency[`${item.currency}${this.currency}`]?.[ + lastTransactionPoint.date + ] ?? 1 + ); + const marketPriceInBaseCurrency = ( marketSymbolMap[endDateString]?.[item.symbol] ?? item.averagePrice ).mul( @@ -314,16 +316,25 @@ export abstract class PortfolioCalculator { ); const { + currentValues, + currentValuesWithCurrencyEffect, grossPerformance, grossPerformancePercentage, grossPerformancePercentageWithCurrencyEffect, grossPerformanceWithCurrencyEffect, hasErrors, + investmentValuesAccumulated, + investmentValuesAccumulatedWithCurrencyEffect, + investmentValuesWithCurrencyEffect, netPerformance, netPerformancePercentage, - netPerformancePercentageWithCurrencyEffect, - netPerformanceWithCurrencyEffect, + netPerformancePercentageWithCurrencyEffectMap, + netPerformanceValues, + netPerformanceValuesWithCurrencyEffect, + netPerformanceWithCurrencyEffectMap, timeWeightedInvestment, + timeWeightedInvestmentValues, + timeWeightedInvestmentValuesWithCurrencyEffect, timeWeightedInvestmentWithCurrencyEffect, totalDividend, totalDividendInBaseCurrency, @@ -333,36 +344,50 @@ export abstract class PortfolioCalculator { totalLiabilitiesInBaseCurrency, totalValuablesInBaseCurrency } = this.getSymbolMetrics({ + chartDateMap, marketSymbolMap, - start, dataSource: item.dataSource, - end: endDate, + end: this.endDate, exchangeRates: exchangeRatesByCurrency[`${item.currency}${this.currency}`], + start: this.startDate, symbol: item.symbol }); hasAnySymbolMetricsErrors = hasAnySymbolMetricsErrors || hasErrors; + valuesBySymbol[item.symbol] = { + currentValues, + currentValuesWithCurrencyEffect, + investmentValuesAccumulated, + investmentValuesAccumulatedWithCurrencyEffect, + investmentValuesWithCurrencyEffect, + netPerformanceValues, + netPerformanceValuesWithCurrencyEffect, + timeWeightedInvestmentValues, + timeWeightedInvestmentValuesWithCurrencyEffect + }; + positions.push({ - dividend: totalDividend, - dividendInBaseCurrency: totalDividendInBaseCurrency, + feeInBaseCurrency, timeWeightedInvestment, timeWeightedInvestmentWithCurrencyEffect, + dividend: totalDividend, + dividendInBaseCurrency: totalDividendInBaseCurrency, averagePrice: item.averagePrice, currency: item.currency, dataSource: item.dataSource, fee: item.fee, firstBuyDate: item.firstBuyDate, - grossPerformance: !hasErrors ? grossPerformance ?? null : null, + grossPerformance: !hasErrors ? (grossPerformance ?? null) : null, grossPerformancePercentage: !hasErrors - ? grossPerformancePercentage ?? null + ? (grossPerformancePercentage ?? null) : null, grossPerformancePercentageWithCurrencyEffect: !hasErrors - ? grossPerformancePercentageWithCurrencyEffect ?? null + ? (grossPerformancePercentageWithCurrencyEffect ?? null) : null, grossPerformanceWithCurrencyEffect: !hasErrors - ? grossPerformanceWithCurrencyEffect ?? null + ? (grossPerformanceWithCurrencyEffect ?? null) : null, investment: totalInvestment, investmentWithCurrencyEffect: totalInvestmentWithCurrencyEffect, @@ -370,15 +395,15 @@ export abstract class PortfolioCalculator { marketSymbolMap[endDateString]?.[item.symbol]?.toNumber() ?? null, marketPriceInBaseCurrency: marketPriceInBaseCurrency?.toNumber() ?? null, - netPerformance: !hasErrors ? netPerformance ?? null : null, + netPerformance: !hasErrors ? (netPerformance ?? null) : null, netPerformancePercentage: !hasErrors - ? netPerformancePercentage ?? null + ? (netPerformancePercentage ?? null) : null, - netPerformancePercentageWithCurrencyEffect: !hasErrors - ? netPerformancePercentageWithCurrencyEffect ?? null + netPerformancePercentageWithCurrencyEffectMap: !hasErrors + ? (netPerformancePercentageWithCurrencyEffectMap ?? null) : null, - netPerformanceWithCurrencyEffect: !hasErrors - ? netPerformanceWithCurrencyEffect ?? null + netPerformanceWithCurrencyEffectMap: !hasErrors + ? (netPerformanceWithCurrencyEffectMap ?? null) : null, quantity: item.quantity, symbol: item.symbol, @@ -411,211 +436,9 @@ export abstract class PortfolioCalculator { } } - const overall = this.calculateOverallPerformance(positions); - - return { - ...overall, - errors, - positions, - totalInterestWithCurrencyEffect, - totalLiabilitiesWithCurrencyEffect, - totalValuablesWithCurrencyEffect, - hasErrors: hasAnySymbolMetricsErrors || overall.hasErrors - }; - } - - @LogPerformance - public async getChart({ - dateRange = 'max', - withDataDecimation = true, - withTimeWeightedReturn = false - }: { - dateRange?: DateRange; - withDataDecimation?: boolean; - withTimeWeightedReturn?: boolean; - }): Promise { - const { endDate, startDate } = getInterval(dateRange, this.getStartDate()); - - const daysInMarket = differenceInDays(endDate, startDate) + 1; - const step = withDataDecimation - ? Math.round(daysInMarket / Math.min(daysInMarket, MAX_CHART_ITEMS)) - : 1; - - return this.getChartData({ - step, - end: endDate, - start: startDate - }); - } - - @LogPerformance - public async getChartData({ - end = new Date(Date.now()), - start, - step = 1 - }: { - end?: Date; - start: Date; - step?: number; - }): Promise { - const symbols: { [symbol: string]: boolean } = {}; - - const transactionPointsBeforeEndDate = - this.transactionPoints?.filter((transactionPoint) => { - return isBefore(parseDate(transactionPoint.date), end); - }) ?? []; - - const currencies: { [symbol: string]: string } = {}; - const dataGatheringItems: IDataGatheringItem[] = []; - const firstIndex = transactionPointsBeforeEndDate.length; - - let dates = eachDayOfInterval({ start, end }, { step }).map((date) => { - return resetHours(date); - }); - - const includesEndDate = isSameDay(last(dates), end); - - if (!includesEndDate) { - dates.push(resetHours(end)); - } - - if (transactionPointsBeforeEndDate.length > 0) { - for (const { - currency, - dataSource, - symbol - } of transactionPointsBeforeEndDate[firstIndex - 1].items) { - dataGatheringItems.push({ - dataSource, - symbol - }); - currencies[symbol] = currency; - symbols[symbol] = true; - } - } - - const { dataProviderInfos, values: marketSymbols } = - await this.currentRateService.getValues({ - dataGatheringItems, - dateQuery: { - in: [ - ...dates, - ...this.transactionPoints.map(({ date }) => - resetHours(parseDate(date)) - ) - ] - } - }); - - this.dataProviderInfos = dataProviderInfos; - - const marketSymbolMap: { - [date: string]: { [symbol: string]: Big }; - } = {}; - - let exchangeRatesByCurrency = - await this.exchangeRateDataService.getExchangeRatesByCurrency({ - currencies: uniq(Object.values(currencies)), - endDate: endOfDay(end), - startDate: this.getStartDate(), - targetCurrency: this.currency - }); - - for (const marketSymbol of marketSymbols) { - const dateString = format(marketSymbol.date, DATE_FORMAT); - if (!marketSymbolMap[dateString]) { - marketSymbolMap[dateString] = {}; - } - if (marketSymbol.marketPrice) { - marketSymbolMap[dateString][marketSymbol.symbol] = new Big( - marketSymbol.marketPrice - ); - } - } - - const accumulatedValuesByDate: { - [date: string]: { - investmentValueWithCurrencyEffect: Big; - totalCurrentValue: Big; - totalCurrentValueWithCurrencyEffect: Big; - totalAccountBalanceWithCurrencyEffect: Big; - totalInvestmentValue: Big; - totalInvestmentValueWithCurrencyEffect: Big; - totalNetPerformanceValue: Big; - totalNetPerformanceValueWithCurrencyEffect: Big; - totalTimeWeightedInvestmentValue: Big; - totalTimeWeightedInvestmentValueWithCurrencyEffect: Big; - }; - } = {}; - - const valuesBySymbol: { - [symbol: string]: { - currentValues: { [date: string]: Big }; - currentValuesWithCurrencyEffect: { [date: string]: Big }; - investmentValuesAccumulated: { [date: string]: Big }; - investmentValuesAccumulatedWithCurrencyEffect: { [date: string]: Big }; - investmentValuesWithCurrencyEffect: { [date: string]: Big }; - netPerformanceValues: { [date: string]: Big }; - netPerformanceValuesWithCurrencyEffect: { [date: string]: Big }; - timeWeightedInvestmentValues: { [date: string]: Big }; - timeWeightedInvestmentValuesWithCurrencyEffect: { [date: string]: Big }; - }; - } = {}; - - for (const symbol of Object.keys(symbols)) { - const { - currentValues, - currentValuesWithCurrencyEffect, - investmentValuesAccumulated, - investmentValuesAccumulatedWithCurrencyEffect, - investmentValuesWithCurrencyEffect, - netPerformanceValues, - netPerformanceValuesWithCurrencyEffect, - timeWeightedInvestmentValues, - timeWeightedInvestmentValuesWithCurrencyEffect - } = this.getSymbolMetrics({ - end, - marketSymbolMap, - start, - step, - symbol, - dataSource: null, - exchangeRates: - exchangeRatesByCurrency[`${currencies[symbol]}${this.currency}`], - isChartMode: true - }); - - valuesBySymbol[symbol] = { - currentValues, - currentValuesWithCurrencyEffect, - investmentValuesAccumulated, - investmentValuesAccumulatedWithCurrencyEffect, - investmentValuesWithCurrencyEffect, - netPerformanceValues, - netPerformanceValuesWithCurrencyEffect, - timeWeightedInvestmentValues, - timeWeightedInvestmentValuesWithCurrencyEffect - }; - } - - let lastDate = format(this.startDate, DATE_FORMAT); - - for (const currentDate of dates) { - const dateString = format(currentDate, DATE_FORMAT); - - accumulatedValuesByDate[dateString] = { - investmentValueWithCurrencyEffect: new Big(0), - totalAccountBalanceWithCurrencyEffect: new Big(0), - totalCurrentValue: new Big(0), - totalCurrentValueWithCurrencyEffect: new Big(0), - totalInvestmentValue: new Big(0), - totalInvestmentValueWithCurrencyEffect: new Big(0), - totalNetPerformanceValue: new Big(0), - totalNetPerformanceValueWithCurrencyEffect: new Big(0), - totalTimeWeightedInvestmentValue: new Big(0), - totalTimeWeightedInvestmentValueWithCurrencyEffect: new Big(0) - }; + let lastDate = chartDates[0]; + for (const dateString of chartDates) { for (const symbol of Object.keys(valuesBySymbol)) { const symbolValues = valuesBySymbol[symbol]; @@ -653,91 +476,63 @@ export abstract class PortfolioCalculator { dateString ] ?? new Big(0); - accumulatedValuesByDate[dateString].investmentValueWithCurrencyEffect = - accumulatedValuesByDate[ - dateString - ].investmentValueWithCurrencyEffect.add( - investmentValueWithCurrencyEffect - ); - - accumulatedValuesByDate[dateString].totalCurrentValue = - accumulatedValuesByDate[dateString].totalCurrentValue.add( - currentValue - ); - - accumulatedValuesByDate[ - dateString - ].totalCurrentValueWithCurrencyEffect = accumulatedValuesByDate[ - dateString - ].totalCurrentValueWithCurrencyEffect.add( - currentValueWithCurrencyEffect - ); - - accumulatedValuesByDate[dateString].totalInvestmentValue = - accumulatedValuesByDate[dateString].totalInvestmentValue.add( - investmentValueAccumulated - ); - - accumulatedValuesByDate[ - dateString - ].totalInvestmentValueWithCurrencyEffect = accumulatedValuesByDate[ - dateString - ].totalInvestmentValueWithCurrencyEffect.add( - investmentValueAccumulatedWithCurrencyEffect - ); - - accumulatedValuesByDate[dateString].totalNetPerformanceValue = - accumulatedValuesByDate[dateString].totalNetPerformanceValue.add( - netPerformanceValue - ); - - accumulatedValuesByDate[ - dateString - ].totalNetPerformanceValueWithCurrencyEffect = accumulatedValuesByDate[ - dateString - ].totalNetPerformanceValueWithCurrencyEffect.add( - netPerformanceValueWithCurrencyEffect - ); - - accumulatedValuesByDate[dateString].totalTimeWeightedInvestmentValue = - accumulatedValuesByDate[ - dateString - ].totalTimeWeightedInvestmentValue.add(timeWeightedInvestmentValue); - - accumulatedValuesByDate[ - dateString - ].totalTimeWeightedInvestmentValueWithCurrencyEffect = - accumulatedValuesByDate[ - dateString - ].totalTimeWeightedInvestmentValueWithCurrencyEffect.add( - timeWeightedInvestmentValueWithCurrencyEffect - ); - } - - if ( - this.accountBalanceItems.some(({ date }) => { - return date === dateString; - }) - ) { - accumulatedValuesByDate[ - dateString - ].totalAccountBalanceWithCurrencyEffect = new Big( - this.accountBalanceItems.find(({ date }) => { - return date === dateString; - }).value - ); - } else { - accumulatedValuesByDate[ - dateString - ].totalAccountBalanceWithCurrencyEffect = - accumulatedValuesByDate[lastDate] - ?.totalAccountBalanceWithCurrencyEffect ?? new Big(0); + accumulatedValuesByDate[dateString] = { + investmentValueWithCurrencyEffect: ( + accumulatedValuesByDate[dateString] + ?.investmentValueWithCurrencyEffect ?? new Big(0) + ).add(investmentValueWithCurrencyEffect), + totalAccountBalanceWithCurrencyEffect: this.accountBalanceItems.some( + ({ date }) => { + return date === dateString; + } + ) + ? new Big( + this.accountBalanceItems.find(({ date }) => { + return date === dateString; + }).value + ) + : (accumulatedValuesByDate[lastDate] + ?.totalAccountBalanceWithCurrencyEffect ?? new Big(0)), + totalCurrentValue: ( + accumulatedValuesByDate[dateString]?.totalCurrentValue ?? new Big(0) + ).add(currentValue), + totalCurrentValueWithCurrencyEffect: ( + accumulatedValuesByDate[dateString] + ?.totalCurrentValueWithCurrencyEffect ?? new Big(0) + ).add(currentValueWithCurrencyEffect), + totalInvestmentValue: ( + accumulatedValuesByDate[dateString]?.totalInvestmentValue ?? + new Big(0) + ).add(investmentValueAccumulated), + totalInvestmentValueWithCurrencyEffect: ( + accumulatedValuesByDate[dateString] + ?.totalInvestmentValueWithCurrencyEffect ?? new Big(0) + ).add(investmentValueAccumulatedWithCurrencyEffect), + totalNetPerformanceValue: ( + accumulatedValuesByDate[dateString]?.totalNetPerformanceValue ?? + new Big(0) + ).add(netPerformanceValue), + totalNetPerformanceValueWithCurrencyEffect: ( + accumulatedValuesByDate[dateString] + ?.totalNetPerformanceValueWithCurrencyEffect ?? new Big(0) + ).add(netPerformanceValueWithCurrencyEffect), + totalTimeWeightedInvestmentValue: ( + accumulatedValuesByDate[dateString] + ?.totalTimeWeightedInvestmentValue ?? new Big(0) + ).add(timeWeightedInvestmentValue), + totalTimeWeightedInvestmentValueWithCurrencyEffect: ( + accumulatedValuesByDate[dateString] + ?.totalTimeWeightedInvestmentValueWithCurrencyEffect ?? new Big(0) + ).add(timeWeightedInvestmentValueWithCurrencyEffect) + }; } lastDate = dateString; } - return Object.entries(accumulatedValuesByDate).map(([date, values]) => { + const historicalData: HistoricalDataItem[] = Object.entries( + accumulatedValuesByDate + ).map(([date, values]) => { const { investmentValueWithCurrencyEffect, totalAccountBalanceWithCurrencyEffect, @@ -755,7 +550,6 @@ export abstract class PortfolioCalculator { ? 0 : totalNetPerformanceValue .div(totalTimeWeightedInvestmentValue) - .mul(100) .toNumber(); const netPerformanceInPercentageWithCurrencyEffect = @@ -763,7 +557,6 @@ export abstract class PortfolioCalculator { ? 0 : totalNetPerformanceValueWithCurrencyEffect .div(totalTimeWeightedInvestmentValueWithCurrencyEffect) - .mul(100) .toNumber(); return { @@ -787,6 +580,19 @@ export abstract class PortfolioCalculator { valueWithCurrencyEffect: totalCurrentValueWithCurrencyEffect.toNumber() }; }); + + const overall = this.calculateOverallPerformance(positions); + + return { + ...overall, + errors, + historicalData, + positions, + totalInterestWithCurrencyEffect, + totalLiabilitiesWithCurrencyEffect, + totalValuablesWithCurrencyEffect, + hasErrors: hasAnySymbolMetricsErrors || overall.hasErrors + }; } @LogPerformance @@ -868,6 +674,74 @@ export abstract class PortfolioCalculator { return this.snapshot.totalLiabilitiesWithCurrencyEffect; } + public async getPerformance({ end, start }) { + await this.snapshotPromise; + + const { historicalData } = this.snapshot; + + const chart: HistoricalDataItem[] = []; + + let netPerformanceAtStartDate: number; + let netPerformanceWithCurrencyEffectAtStartDate: number; + let totalInvestmentValuesWithCurrencyEffect: number[] = []; + + for (let historicalDataItem of historicalData) { + const date = resetHours(parseDate(historicalDataItem.date)); + + if (!isBefore(date, start) && !isAfter(date, end)) { + if (!isNumber(netPerformanceAtStartDate)) { + netPerformanceAtStartDate = historicalDataItem.netPerformance; + + netPerformanceWithCurrencyEffectAtStartDate = + historicalDataItem.netPerformanceWithCurrencyEffect; + } + + const netPerformanceSinceStartDate = + historicalDataItem.netPerformance - netPerformanceAtStartDate; + + const netPerformanceWithCurrencyEffectSinceStartDate = + historicalDataItem.netPerformanceWithCurrencyEffect - + netPerformanceWithCurrencyEffectAtStartDate; + + if (historicalDataItem.totalInvestmentValueWithCurrencyEffect > 0) { + totalInvestmentValuesWithCurrencyEffect.push( + historicalDataItem.totalInvestmentValueWithCurrencyEffect + ); + } + + const timeWeightedInvestmentValue = + totalInvestmentValuesWithCurrencyEffect.length > 0 + ? sum(totalInvestmentValuesWithCurrencyEffect) / + totalInvestmentValuesWithCurrencyEffect.length + : 0; + + chart.push({ + ...historicalDataItem, + netPerformance: + historicalDataItem.netPerformance - netPerformanceAtStartDate, + netPerformanceWithCurrencyEffect: + netPerformanceWithCurrencyEffectSinceStartDate, + netPerformanceInPercentage: + timeWeightedInvestmentValue === 0 + ? 0 + : netPerformanceSinceStartDate / timeWeightedInvestmentValue, + netPerformanceInPercentageWithCurrencyEffect: + timeWeightedInvestmentValue === 0 + ? 0 + : netPerformanceWithCurrencyEffectSinceStartDate / + timeWeightedInvestmentValue, + // TODO: Add net worth with valuables + // netWorth: totalCurrentValueWithCurrencyEffect + // .plus(totalAccountBalanceWithCurrencyEffect) + // .toNumber() + netWorth: 0 + }); + } + } + + return { chart }; + } + @LogPerformance public async getSnapshot() { await this.snapshotPromise; @@ -903,24 +777,22 @@ export abstract class PortfolioCalculator { } protected abstract getSymbolMetrics({ + chartDateMap, dataSource, end, exchangeRates, - isChartMode, marketSymbolMap, start, - step, symbol }: { + chartDateMap: { [date: string]: boolean }; end: Date; exchangeRates: { [dateString: string]: number }; - isChartMode?: boolean; marketSymbolMap: { [date: string]: { [symbol: string]: Big }; }; start: Date; - step?: number; - } & UniqueAsset): SymbolMetrics; + } & AssetProfileIdentifier): SymbolMetrics; public getTransactionPoints() { return this.transactionPoints; @@ -933,6 +805,74 @@ export abstract class PortfolioCalculator { return this.snapshot.totalValuablesWithCurrencyEffect; } + private getChartDateMap({ + endDate, + startDate, + step + }: { + endDate: Date; + startDate: Date; + step: number; + }) { + // Create a map of all relevant chart dates: + // 1. Add transaction point dates + let chartDateMap = this.transactionPoints.reduce((result, { date }) => { + result[date] = true; + return result; + }, {}); + + // 2. Add dates between transactions respecting the specified step size + for (let date of eachDayOfInterval( + { end: endDate, start: startDate }, + { step } + )) { + chartDateMap[format(date, DATE_FORMAT)] = true; + } + + if (step > 1) { + // Reduce the step size of last 90 days + for (let date of eachDayOfInterval( + { end: endDate, start: subDays(endDate, 90) }, + { step: 3 } + )) { + chartDateMap[format(date, DATE_FORMAT)] = true; + } + + // Reduce the step size of last 30 days + for (let date of eachDayOfInterval( + { end: endDate, start: subDays(endDate, 30) }, + { step: 1 } + )) { + chartDateMap[format(date, DATE_FORMAT)] = true; + } + } + + // Make sure the end date is present + chartDateMap[format(endDate, DATE_FORMAT)] = true; + + // Make sure some key dates are present + for (let dateRange of ['1d', '1y', '5y', 'max', 'mtd', 'wtd', 'ytd']) { + const { endDate: dateRangeEnd, startDate: dateRangeStart } = + getIntervalFromDateRange(dateRange); + + if ( + !isBefore(dateRangeStart, startDate) && + !isAfter(dateRangeStart, endDate) + ) { + chartDateMap[format(dateRangeStart, DATE_FORMAT)] = true; + } + + if ( + !isBefore(dateRangeEnd, startDate) && + !isAfter(dateRangeEnd, endDate) + ) { + chartDateMap[format(dateRangeEnd, DATE_FORMAT)] = true; + } + } + + return chartDateMap; + } + @LogPerformance protected computeTransactionPoints() { this.transactionPoints = []; @@ -1074,52 +1014,47 @@ export abstract class PortfolioCalculator { @LogPerformance protected async initialize() { - if (this.useCache) { - const startTimeTotal = performance.now(); + const startTimeTotal = performance.now(); - const cachedSnapshot = await this.redisCacheService.get( - this.redisCacheService.getPortfolioSnapshotKey({ - userId: this.userId - }) - ); + const cachedSnapshot = await this.redisCacheService.get( + this.redisCacheService.getPortfolioSnapshotKey({ + filters: this.filters, + userId: this.userId + }) + ); - if (cachedSnapshot) { - this.snapshot = plainToClass( - PortfolioSnapshot, - JSON.parse(cachedSnapshot) - ); + if (cachedSnapshot) { + this.snapshot = plainToClass( + PortfolioSnapshot, + JSON.parse(cachedSnapshot) + ); - Logger.debug( - `Fetched portfolio snapshot from cache in ${( - (performance.now() - startTimeTotal) / - 1000 - ).toFixed(3)} seconds`, - 'PortfolioCalculator' - ); - } else { - this.snapshot = await this.computeSnapshot( - this.startDate, - this.endDate - ); + Logger.debug( + `Fetched portfolio snapshot from cache in ${( + (performance.now() - startTimeTotal) / + 1000 + ).toFixed(3)} seconds`, + 'PortfolioCalculator' + ); + } else { + this.snapshot = await this.computeSnapshot(); - this.redisCacheService.set( - this.redisCacheService.getPortfolioSnapshotKey({ - userId: this.userId - }), - JSON.stringify(this.snapshot), - this.configurationService.get('CACHE_QUOTES_TTL') - ); + this.redisCacheService.set( + this.redisCacheService.getPortfolioSnapshotKey({ + filters: this.filters, + userId: this.userId + }), + JSON.stringify(this.snapshot), + this.configurationService.get('CACHE_QUOTES_TTL') + ); - Logger.debug( - `Computed portfolio snapshot in ${( - (performance.now() - startTimeTotal) / - 1000 - ).toFixed(3)} seconds`, - 'PortfolioCalculator' - ); - } - } else { - this.snapshot = await this.computeSnapshot(this.startDate, this.endDate); + Logger.debug( + `Computed portfolio snapshot in ${( + (performance.now() - startTimeTotal) / + 1000 + ).toFixed(3)} seconds`, + 'PortfolioCalculator' + ); } } } diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts index 44e812289..a60156ee6 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts @@ -17,6 +17,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -68,9 +69,7 @@ describe('PortfolioCalculator', () => { describe('get current positions', () => { it.only('with BALN.SW buy and sell in two activities', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2021-12-18').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2021-12-18').getTime()); const activities: Activity[] = [ { @@ -124,43 +123,22 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'CHF', - hasFilters: false, userId: userDummyData.id }); - const chartData = await portfolioCalculator.getChartData({ - start: parseDate('2021-11-22') - }); - - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2021-11-22') - ); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); const investments = portfolioCalculator.getInvestments(); const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ - data: chartData, + data: portfolioSnapshot.historicalData, groupBy: 'month' }); - spy.mockRestore(); - - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('0'), errors: [], - grossPerformance: new Big('-12.6'), - grossPerformancePercentage: new Big('-0.04408677396780965649'), - grossPerformancePercentageWithCurrencyEffect: new Big( - '-0.04408677396780965649' - ), - grossPerformanceWithCurrencyEffect: new Big('-12.6'), hasErrors: false, - netPerformance: new Big('-15.8'), - netPerformancePercentage: new Big('-0.05528341497550734703'), - netPerformancePercentageWithCurrencyEffect: new Big( - '-0.05528341497550734703' - ), - netPerformanceWithCurrencyEffect: new Big('-15.8'), positions: [ { averagePrice: new Big('0'), @@ -169,6 +147,7 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('3.2'), + feeInBaseCurrency: new Big('3.2'), firstBuyDate: '2021-11-22', grossPerformance: new Big('-12.6'), grossPerformancePercentage: new Big('-0.04408677396780965649'), @@ -178,12 +157,12 @@ describe('PortfolioCalculator', () => { grossPerformanceWithCurrencyEffect: new Big('-12.6'), investment: new Big('0'), investmentWithCurrencyEffect: new Big('0'), - netPerformance: new Big('-15.8'), - netPerformancePercentage: new Big('-0.05528341497550734703'), - netPerformancePercentageWithCurrencyEffect: new Big( - '-0.05528341497550734703' - ), - netPerformanceWithCurrencyEffect: new Big('-15.8'), + netPerformancePercentageWithCurrencyEffectMap: { + max: new Big('-0.0552834149755073478') + }, + netPerformanceWithCurrencyEffectMap: { + max: new Big('-15.8') + }, marketPrice: 148.9, marketPriceInBaseCurrency: 148.9, quantity: new Big('0'), @@ -205,6 +184,16 @@ describe('PortfolioCalculator', () => { totalValuablesWithCurrencyEffect: new Big('0') }); + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: -15.8, + netPerformanceInPercentage: -0.05528341497550734703, + netPerformanceInPercentageWithCurrencyEffect: -0.05528341497550734703, + netPerformanceWithCurrencyEffect: -15.8, + totalInvestmentValueWithCurrencyEffect: 0 + }) + ); + expect(investments).toEqual([ { date: '2021-11-22', investment: new Big('285.8') }, { date: '2021-11-30', investment: new Big('0') } diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts index 308c58c6a..39424ed27 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy-and-sell.spec.ts @@ -17,6 +17,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -68,9 +69,7 @@ describe('PortfolioCalculator', () => { describe('get current positions', () => { it.only('with BALN.SW buy and sell', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2021-12-18').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2021-12-18').getTime()); const activities: Activity[] = [ { @@ -109,43 +108,22 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'CHF', - hasFilters: false, userId: userDummyData.id }); - const chartData = await portfolioCalculator.getChartData({ - start: parseDate('2021-11-22') - }); - - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2021-11-22') - ); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); const investments = portfolioCalculator.getInvestments(); const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ - data: chartData, + data: portfolioSnapshot.historicalData, groupBy: 'month' }); - spy.mockRestore(); - - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('0'), errors: [], - grossPerformance: new Big('-12.6'), - grossPerformancePercentage: new Big('-0.0440867739678096571'), - grossPerformancePercentageWithCurrencyEffect: new Big( - '-0.0440867739678096571' - ), - grossPerformanceWithCurrencyEffect: new Big('-12.6'), hasErrors: false, - netPerformance: new Big('-15.8'), - netPerformancePercentage: new Big('-0.0552834149755073478'), - netPerformancePercentageWithCurrencyEffect: new Big( - '-0.0552834149755073478' - ), - netPerformanceWithCurrencyEffect: new Big('-15.8'), positions: [ { averagePrice: new Big('0'), @@ -154,6 +132,7 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('3.2'), + feeInBaseCurrency: new Big('3.2'), firstBuyDate: '2021-11-22', grossPerformance: new Big('-12.6'), grossPerformancePercentage: new Big('-0.0440867739678096571'), @@ -165,10 +144,12 @@ describe('PortfolioCalculator', () => { investmentWithCurrencyEffect: new Big('0'), netPerformance: new Big('-15.8'), netPerformancePercentage: new Big('-0.0552834149755073478'), - netPerformancePercentageWithCurrencyEffect: new Big( - '-0.0552834149755073478' - ), - netPerformanceWithCurrencyEffect: new Big('-15.8'), + netPerformancePercentageWithCurrencyEffectMap: { + max: new Big('-0.0552834149755073478') + }, + netPerformanceWithCurrencyEffectMap: { + max: new Big('-15.8') + }, marketPrice: 148.9, marketPriceInBaseCurrency: 148.9, quantity: new Big('0'), @@ -188,6 +169,16 @@ describe('PortfolioCalculator', () => { totalValuablesWithCurrencyEffect: new Big('0') }); + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: -15.8, + netPerformanceInPercentage: -0.05528341497550734703, + netPerformanceInPercentageWithCurrencyEffect: -0.05528341497550734703, + netPerformanceWithCurrencyEffect: -15.8, + totalInvestmentValueWithCurrencyEffect: 0 + }) + ); + expect(investments).toEqual([ { date: '2021-11-22', investment: new Big('285.8') }, { date: '2021-11-30', investment: new Big('0') } diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts index 7e73f811e..49d4ec276 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-baln-buy.spec.ts @@ -17,6 +17,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -68,9 +69,7 @@ describe('PortfolioCalculator', () => { describe('get current positions', () => { it.only('with BALN.SW buy', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2021-12-18').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2021-12-18').getTime()); const activities: Activity[] = [ { @@ -94,43 +93,22 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'CHF', - hasFilters: false, userId: userDummyData.id }); - const chartData = await portfolioCalculator.getChartData({ - start: parseDate('2021-11-30') - }); - - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2021-11-30') - ); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); const investments = portfolioCalculator.getInvestments(); const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ - data: chartData, + data: portfolioSnapshot.historicalData, groupBy: 'month' }); - spy.mockRestore(); - - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('297.8'), errors: [], - grossPerformance: new Big('24.6'), - grossPerformancePercentage: new Big('0.09004392386530014641'), - grossPerformancePercentageWithCurrencyEffect: new Big( - '0.09004392386530014641' - ), - grossPerformanceWithCurrencyEffect: new Big('24.6'), hasErrors: false, - netPerformance: new Big('23.05'), - netPerformancePercentage: new Big('0.08437042459736456808'), - netPerformancePercentageWithCurrencyEffect: new Big( - '0.08437042459736456808' - ), - netPerformanceWithCurrencyEffect: new Big('23.05'), positions: [ { averagePrice: new Big('136.6'), @@ -139,6 +117,7 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('1.55'), + feeInBaseCurrency: new Big('1.55'), firstBuyDate: '2021-11-30', grossPerformance: new Big('24.6'), grossPerformancePercentage: new Big('0.09004392386530014641'), @@ -150,10 +129,18 @@ describe('PortfolioCalculator', () => { investmentWithCurrencyEffect: new Big('273.2'), netPerformance: new Big('23.05'), netPerformancePercentage: new Big('0.08437042459736456808'), - netPerformancePercentageWithCurrencyEffect: new Big( - '0.08437042459736456808' - ), - netPerformanceWithCurrencyEffect: new Big('23.05'), + netPerformancePercentageWithCurrencyEffectMap: { + max: new Big('0.08437042459736456808') + }, + netPerformanceWithCurrencyEffectMap: { + '1d': new Big('10.00'), // 2 * (148.9 - 143.9) -> no fees in this time period + '1y': new Big('23.05'), // 2 * (148.9 - 136.6) - 1.55 + '5y': new Big('23.05'), // 2 * (148.9 - 136.6) - 1.55 + max: new Big('23.05'), // 2 * (148.9 - 136.6) - 1.55 + mtd: new Big('24.60'), // 2 * (148.9 - 136.6) -> no fees in this time period + wtd: new Big('13.80'), // 2 * (148.9 - 142.0) -> no fees in this time period + ytd: new Big('23.05') // 2 * (148.9 - 136.6) - 1.55 + }, marketPrice: 148.9, marketPriceInBaseCurrency: 148.9, quantity: new Big('2'), @@ -173,6 +160,16 @@ describe('PortfolioCalculator', () => { totalValuablesWithCurrencyEffect: new Big('0') }); + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: 23.05, + netPerformanceInPercentage: 0.08437042459736457, + netPerformanceInPercentageWithCurrencyEffect: 0.08437042459736457, + netPerformanceWithCurrencyEffect: 23.05, + totalInvestmentValueWithCurrencyEffect: 273.2 + }) + ); + expect(investments).toEqual([ { date: '2021-11-30', investment: new Big('273.2') } ]); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts index fc8f7d016..4961ad071 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts @@ -18,6 +18,7 @@ import { ExchangeRateDataServiceMock } from '@ghostfolio/api/services/exchange-r import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -79,11 +80,10 @@ describe('PortfolioCalculator', () => { ); }); - describe('get current positions', () => { + // TODO + describe.skip('get current positions', () => { it.only('with BTCUSD buy and sell partially', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2018-01-01').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2018-01-01').getTime()); const activities: Activity[] = [ { @@ -122,43 +122,23 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'CHF', - hasFilters: false, userId: userDummyData.id }); - const chartData = await portfolioCalculator.getChartData({ - start: parseDate('2015-01-01') - }); - - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2015-01-01') - ); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); const investments = portfolioCalculator.getInvestments(); const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ - data: chartData, + data: portfolioSnapshot.historicalData, groupBy: 'month' }); - spy.mockRestore(); - - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('13298.425356'), errors: [], - grossPerformance: new Big('27172.74'), - grossPerformancePercentage: new Big('42.41978276196153750666'), - grossPerformancePercentageWithCurrencyEffect: new Big( - '41.6401219622042072686' - ), grossPerformanceWithCurrencyEffect: new Big('26516.208701400000064086'), hasErrors: false, - netPerformance: new Big('27172.74'), - netPerformancePercentage: new Big('42.41978276196153750666'), - netPerformancePercentageWithCurrencyEffect: new Big( - '41.6401219622042072686' - ), - netPerformanceWithCurrencyEffect: new Big('26516.208701400000064086'), positions: [ { averagePrice: new Big('320.43'), @@ -167,33 +147,34 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('0'), + feeInBaseCurrency: new Big('0'), firstBuyDate: '2015-01-01', - grossPerformance: new Big('27172.74'), - grossPerformancePercentage: new Big('42.41978276196153750666'), + grossPerformance: new Big('27172.74').mul(0.97373), + grossPerformancePercentage: new Big('0.4241983590271396608571'), grossPerformancePercentageWithCurrencyEffect: new Big( - '41.6401219622042072686' + '0.4164017412624815597008' ), grossPerformanceWithCurrencyEffect: new Big( '26516.208701400000064086' ), - investment: new Big('320.43'), + investment: new Big('320.43').mul(0.97373), investmentWithCurrencyEffect: new Big('318.542667299999967957'), marketPrice: 13657.2, marketPriceInBaseCurrency: 13298.425356, - netPerformance: new Big('27172.74'), - netPerformancePercentage: new Big('42.41978276196153750666'), - netPerformancePercentageWithCurrencyEffect: new Big( - '41.6401219622042072686' - ), - netPerformanceWithCurrencyEffect: new Big( - '26516.208701400000064086' - ), + netPerformance: new Big('27172.74').mul(0.97373), + netPerformancePercentage: new Big('0.4241983590271396608571'), + netPerformancePercentageWithCurrencyEffectMap: { + max: new Big('0.417188277288666871633') + }, + netPerformanceWithCurrencyEffectMap: { + max: new Big('26516.208701400000064086') + }, quantity: new Big('1'), symbol: 'BTCUSD', tags: [], - timeWeightedInvestment: new Big('640.56763686131386861314'), + timeWeightedInvestment: new Big('623.73914366102470265325'), timeWeightedInvestmentWithCurrencyEffect: new Big( - '636.79469348020066587024' + '636.79389574611155533947' ), transactionCount: 2, valueInBaseCurrency: new Big('13298.425356') @@ -201,12 +182,22 @@ describe('PortfolioCalculator', () => { ], totalFeesWithCurrencyEffect: new Big('0'), totalInterestWithCurrencyEffect: new Big('0'), - totalInvestment: new Big('320.43'), + totalInvestment: new Big('320.43').mul(0.97373), totalInvestmentWithCurrencyEffect: new Big('318.542667299999967957'), totalLiabilitiesWithCurrencyEffect: new Big('0'), totalValuablesWithCurrencyEffect: new Big('0') }); + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: new Big('27172.74').mul(0.97373).toNumber(), + netPerformanceInPercentage: 42.41983590271396609433, + netPerformanceInPercentageWithCurrencyEffect: 41.64017412624815597854, + netPerformanceWithCurrencyEffect: 26516.208701400000064086, + totalInvestmentValueWithCurrencyEffect: 318.542667299999967957 + }) + ); + expect(investments).toEqual([ { date: '2015-01-01', investment: new Big('640.86') }, { date: '2017-12-31', investment: new Big('320.43') } diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts index 3cbcb3c44..0aec5f1ef 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-fee.spec.ts @@ -17,6 +17,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -68,9 +69,7 @@ describe('PortfolioCalculator', () => { describe('compute portfolio snapshot', () => { it.only('with fee activity', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2021-12-18').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2021-12-18').getTime()); const activities: Activity[] = [ { @@ -94,28 +93,15 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'USD', - hasFilters: false, userId: userDummyData.id }); - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2021-11-30') - ); - - spy.mockRestore(); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('0'), errors: [], - grossPerformance: new Big('0'), - grossPerformancePercentage: new Big('0'), - grossPerformancePercentageWithCurrencyEffect: new Big('0'), - grossPerformanceWithCurrencyEffect: new Big('0'), hasErrors: true, - netPerformance: new Big('0'), - netPerformancePercentage: new Big('0'), - netPerformancePercentageWithCurrencyEffect: new Big('0'), - netPerformanceWithCurrencyEffect: new Big('0'), positions: [ { averagePrice: new Big('0'), @@ -124,6 +110,7 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('49'), + feeInBaseCurrency: new Big('49'), firstBuyDate: '2021-09-01', grossPerformance: null, grossPerformancePercentage: null, @@ -135,8 +122,8 @@ describe('PortfolioCalculator', () => { marketPriceInBaseCurrency: 0, netPerformance: null, netPerformancePercentage: null, - netPerformancePercentageWithCurrencyEffect: null, - netPerformanceWithCurrencyEffect: null, + netPerformancePercentageWithCurrencyEffectMap: null, + netPerformanceWithCurrencyEffectMap: null, quantity: new Big('0'), symbol: '2c463fb3-af07-486e-adb0-8301b3d72141', tags: [], @@ -153,6 +140,16 @@ describe('PortfolioCalculator', () => { totalLiabilitiesWithCurrencyEffect: new Big('0'), totalValuablesWithCurrencyEffect: new Big('0') }); + + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: 0, + netPerformanceInPercentage: 0, + netPerformanceInPercentageWithCurrencyEffect: 0, + netPerformanceWithCurrencyEffect: 0, + totalInvestmentValueWithCurrencyEffect: 0 + }) + ); }); }); }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts index f44cf65bf..3969d3b13 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-googl-buy.spec.ts @@ -18,6 +18,7 @@ import { ExchangeRateDataServiceMock } from '@ghostfolio/api/services/exchange-r import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -81,9 +82,7 @@ describe('PortfolioCalculator', () => { describe('get current positions', () => { it.only('with GOOGL buy', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2023-07-10').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2023-07-10').getTime()); const activities: Activity[] = [ { @@ -107,43 +106,22 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'CHF', - hasFilters: false, userId: userDummyData.id }); - const chartData = await portfolioCalculator.getChartData({ - start: parseDate('2023-01-03') - }); - - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2023-01-03') - ); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); const investments = portfolioCalculator.getInvestments(); const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ - data: chartData, + data: portfolioSnapshot.historicalData, groupBy: 'month' }); - spy.mockRestore(); - - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('103.10483'), errors: [], - grossPerformance: new Big('27.33'), - grossPerformancePercentage: new Big('0.3066651705565529623'), - grossPerformancePercentageWithCurrencyEffect: new Big( - '0.25235044599563974109' - ), - grossPerformanceWithCurrencyEffect: new Big('20.775774'), hasErrors: false, - netPerformance: new Big('26.33'), - netPerformancePercentage: new Big('0.29544434470377019749'), - netPerformancePercentageWithCurrencyEffect: new Big( - '0.24112962014285697628' - ), - netPerformanceWithCurrencyEffect: new Big('19.851974'), positions: [ { averagePrice: new Big('89.12'), @@ -152,40 +130,53 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('1'), + feeInBaseCurrency: new Big('0.9238'), firstBuyDate: '2023-01-03', - grossPerformance: new Big('27.33'), + grossPerformance: new Big('27.33').mul(0.8854), grossPerformancePercentage: new Big('0.3066651705565529623'), grossPerformancePercentageWithCurrencyEffect: new Big( '0.25235044599563974109' ), grossPerformanceWithCurrencyEffect: new Big('20.775774'), - investment: new Big('89.12'), + investment: new Big('89.12').mul(0.8854), investmentWithCurrencyEffect: new Big('82.329056'), - netPerformance: new Big('26.33'), + netPerformance: new Big('26.33').mul(0.8854), netPerformancePercentage: new Big('0.29544434470377019749'), - netPerformancePercentageWithCurrencyEffect: new Big( - '0.24112962014285697628' - ), - netPerformanceWithCurrencyEffect: new Big('19.851974'), + netPerformancePercentageWithCurrencyEffectMap: { + max: new Big('0.24112962014285697628') + }, + netPerformanceWithCurrencyEffectMap: { + max: new Big('19.851974') + }, marketPrice: 116.45, marketPriceInBaseCurrency: 103.10483, quantity: new Big('1'), symbol: 'GOOGL', tags: [], - timeWeightedInvestment: new Big('89.12'), + timeWeightedInvestment: new Big('89.12').mul(0.8854), timeWeightedInvestmentWithCurrencyEffect: new Big('82.329056'), transactionCount: 1, valueInBaseCurrency: new Big('103.10483') } ], - totalFeesWithCurrencyEffect: new Big('1'), + totalFeesWithCurrencyEffect: new Big('0.9238'), totalInterestWithCurrencyEffect: new Big('0'), - totalInvestment: new Big('89.12'), + totalInvestment: new Big('89.12').mul(0.8854), totalInvestmentWithCurrencyEffect: new Big('82.329056'), totalLiabilitiesWithCurrencyEffect: new Big('0'), totalValuablesWithCurrencyEffect: new Big('0') }); + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: new Big('26.33').mul(0.8854).toNumber(), + netPerformanceInPercentage: 0.29544434470377019749, + netPerformanceInPercentageWithCurrencyEffect: 0.24112962014285697628, + netPerformanceWithCurrencyEffect: 19.851974, + totalInvestmentValueWithCurrencyEffect: 82.329056 + }) + ); + expect(investments).toEqual([ { date: '2023-01-03', investment: new Big('89.12') } ]); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts index 0ee5e5aaf..86c5882cd 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-item.spec.ts @@ -17,6 +17,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -68,9 +69,7 @@ describe('PortfolioCalculator', () => { describe('compute portfolio snapshot', () => { it.only('with item activity', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2022-01-31').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2022-01-31').getTime()); const activities: Activity[] = [ { @@ -94,28 +93,15 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'USD', - hasFilters: false, userId: userDummyData.id }); - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2022-01-01') - ); - - spy.mockRestore(); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('0'), errors: [], - grossPerformance: new Big('0'), - grossPerformancePercentage: new Big('0'), - grossPerformancePercentageWithCurrencyEffect: new Big('0'), - grossPerformanceWithCurrencyEffect: new Big('0'), hasErrors: true, - netPerformance: new Big('0'), - netPerformancePercentage: new Big('0'), - netPerformancePercentageWithCurrencyEffect: new Big('0'), - netPerformanceWithCurrencyEffect: new Big('0'), positions: [ { averagePrice: new Big('500000'), @@ -124,6 +110,7 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('0'), + feeInBaseCurrency: new Big('0'), firstBuyDate: '2022-01-01', grossPerformance: null, grossPerformancePercentage: null, @@ -135,8 +122,8 @@ describe('PortfolioCalculator', () => { marketPriceInBaseCurrency: 500000, netPerformance: null, netPerformancePercentage: null, - netPerformancePercentageWithCurrencyEffect: null, - netPerformanceWithCurrencyEffect: null, + netPerformancePercentageWithCurrencyEffectMap: null, + netPerformanceWithCurrencyEffectMap: null, quantity: new Big('0'), symbol: 'dac95060-d4f2-4653-a253-2c45e6fb5cde', tags: [], @@ -153,6 +140,16 @@ describe('PortfolioCalculator', () => { totalLiabilitiesWithCurrencyEffect: new Big('0'), totalValuablesWithCurrencyEffect: new Big('0') }); + + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: 0, + netPerformanceInPercentage: 0, + netPerformanceInPercentageWithCurrencyEffect: 0, + netPerformanceWithCurrencyEffect: 0, + totalInvestmentValueWithCurrencyEffect: 0 + }) + ); }); }); }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts index 541a29681..433627ef7 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-liability.spec.ts @@ -68,9 +68,7 @@ describe('PortfolioCalculator', () => { describe('compute portfolio snapshot', () => { it.only('with liability activity', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2022-01-31').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2022-01-31').getTime()); const activities: Activity[] = [ { @@ -94,12 +92,9 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'USD', - hasFilters: false, userId: userDummyData.id }); - spy.mockRestore(); - const liabilitiesInBaseCurrency = await portfolioCalculator.getLiabilitiesInBaseCurrency(); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts index 5047319d0..da2a748a8 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-msft-buy-with-dividend.spec.ts @@ -18,6 +18,7 @@ import { ExchangeRateDataServiceMock } from '@ghostfolio/api/services/exchange-r import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -81,9 +82,7 @@ describe('PortfolioCalculator', () => { describe('get current positions', () => { it.only('with MSFT buy', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2023-07-10').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2023-07-10').getTime()); const activities: Activity[] = [ { @@ -122,15 +121,10 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'USD', - hasFilters: false, userId: userDummyData.id }); - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2023-07-10') - ); - - spy.mockRestore(); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); expect(portfolioSnapshot).toMatchObject({ errors: [], @@ -161,6 +155,12 @@ describe('PortfolioCalculator', () => { totalLiabilitiesWithCurrencyEffect: new Big('0'), totalValuablesWithCurrencyEffect: new Big('0') }); + + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + totalInvestmentValueWithCurrencyEffect: 298.58 + }) + ); }); }); }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts index 8f5b7d057..df1031684 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts @@ -13,6 +13,7 @@ import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; import { subDays } from 'date-fns'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -64,45 +65,28 @@ describe('PortfolioCalculator', () => { describe('get current positions', () => { it('with no orders', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2021-12-18').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2021-12-18').getTime()); const portfolioCalculator = factory.createCalculator({ activities: [], calculationType: PerformanceCalculationType.TWR, currency: 'CHF', - hasFilters: false, userId: userDummyData.id }); - const start = subDays(new Date(Date.now()), 10); - - const chartData = await portfolioCalculator.getChartData({ start }); - - const portfolioSnapshot = - await portfolioCalculator.computeSnapshot(start); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); const investments = portfolioCalculator.getInvestments(); const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ - data: chartData, + data: portfolioSnapshot.historicalData, groupBy: 'month' }); - spy.mockRestore(); - - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big(0), - grossPerformance: new Big(0), - grossPerformancePercentage: new Big(0), - grossPerformancePercentageWithCurrencyEffect: new Big(0), - grossPerformanceWithCurrencyEffect: new Big(0), hasErrors: false, - netPerformance: new Big(0), - netPerformancePercentage: new Big(0), - netPerformancePercentageWithCurrencyEffect: new Big(0), - netPerformanceWithCurrencyEffect: new Big(0), + historicalData: [], positions: [], totalFeesWithCurrencyEffect: new Big('0'), totalInterestWithCurrencyEffect: new Big('0'), @@ -114,12 +98,7 @@ describe('PortfolioCalculator', () => { expect(investments).toEqual([]); - expect(investmentsByMonth).toEqual([ - { - date: '2021-12-01', - investment: 0 - } - ]); + expect(investmentsByMonth).toEqual([]); }); }); }); diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts index 4b0f9ffc1..0c33efafb 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell-partially.spec.ts @@ -17,6 +17,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -68,9 +69,7 @@ describe('PortfolioCalculator', () => { describe('get current positions', () => { it.only('with NOVN.SW buy and sell partially', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2022-04-11').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2022-04-11').getTime()); const activities: Activity[] = [ { @@ -109,43 +108,22 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'CHF', - hasFilters: false, userId: userDummyData.id }); - const chartData = await portfolioCalculator.getChartData({ - start: parseDate('2022-03-07') - }); - - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2022-03-07') - ); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); const investments = portfolioCalculator.getInvestments(); const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ - data: chartData, + data: portfolioSnapshot.historicalData, groupBy: 'month' }); - spy.mockRestore(); - - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('87.8'), errors: [], - grossPerformance: new Big('21.93'), - grossPerformancePercentage: new Big('0.15113417083448194384'), - grossPerformancePercentageWithCurrencyEffect: new Big( - '0.15113417083448194384' - ), - grossPerformanceWithCurrencyEffect: new Big('21.93'), hasErrors: false, - netPerformance: new Big('17.68'), - netPerformancePercentage: new Big('0.12184460284330327256'), - netPerformancePercentageWithCurrencyEffect: new Big( - '0.12184460284330327256' - ), - netPerformanceWithCurrencyEffect: new Big('17.68'), positions: [ { averagePrice: new Big('75.80'), @@ -154,6 +132,7 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('4.25'), + feeInBaseCurrency: new Big('4.25'), firstBuyDate: '2022-03-07', grossPerformance: new Big('21.93'), grossPerformancePercentage: new Big('0.15113417083448194384'), @@ -165,10 +144,12 @@ describe('PortfolioCalculator', () => { investmentWithCurrencyEffect: new Big('75.80'), netPerformance: new Big('17.68'), netPerformancePercentage: new Big('0.12184460284330327256'), - netPerformancePercentageWithCurrencyEffect: new Big( - '0.12184460284330327256' - ), - netPerformanceWithCurrencyEffect: new Big('17.68'), + netPerformancePercentageWithCurrencyEffectMap: { + max: new Big('0.12348284960422163588') + }, + netPerformanceWithCurrencyEffectMap: { + max: new Big('17.68') + }, marketPrice: 87.8, marketPriceInBaseCurrency: 87.8, quantity: new Big('1'), @@ -190,6 +171,16 @@ describe('PortfolioCalculator', () => { totalValuablesWithCurrencyEffect: new Big('0') }); + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: 17.68, + netPerformanceInPercentage: 0.12184460284330327256, + netPerformanceInPercentageWithCurrencyEffect: 0.12184460284330327256, + netPerformanceWithCurrencyEffect: 17.68, + totalInvestmentValueWithCurrencyEffect: 75.8 + }) + ); + expect(investments).toEqual([ { date: '2022-03-07', investment: new Big('151.6') }, { date: '2022-04-08', investment: new Big('75.8') } diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts index 8fda68554..f8a01310b 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-novn-buy-and-sell.spec.ts @@ -17,6 +17,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { parseDate } from '@ghostfolio/common/helper'; import { Big } from 'big.js'; +import { last } from 'lodash'; jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => { return { @@ -68,9 +69,7 @@ describe('PortfolioCalculator', () => { describe('get current positions', () => { it.only('with NOVN.SW buy and sell', async () => { - const spy = jest - .spyOn(Date, 'now') - .mockImplementation(() => parseDate('2022-04-11').getTime()); + jest.useFakeTimers().setSystemTime(parseDate('2022-04-11').getTime()); const activities: Activity[] = [ { @@ -109,28 +108,34 @@ describe('PortfolioCalculator', () => { activities, calculationType: PerformanceCalculationType.TWR, currency: 'CHF', - hasFilters: false, userId: userDummyData.id }); - const chartData = await portfolioCalculator.getChartData({ - start: parseDate('2022-03-07') - }); - - const portfolioSnapshot = await portfolioCalculator.computeSnapshot( - parseDate('2022-03-07') - ); + const portfolioSnapshot = await portfolioCalculator.getSnapshot(); const investments = portfolioCalculator.getInvestments(); const investmentsByMonth = portfolioCalculator.getInvestmentsByGroup({ - data: chartData, + data: portfolioSnapshot.historicalData, groupBy: 'month' }); - spy.mockRestore(); + expect(portfolioSnapshot.historicalData[0]).toEqual({ + date: '2022-03-06', + investmentValueWithCurrencyEffect: 0, + netPerformance: 0, + netPerformanceInPercentage: 0, + netPerformanceInPercentageWithCurrencyEffect: 0, + netPerformanceWithCurrencyEffect: 0, + netWorth: 0, + totalAccountBalance: 0, + totalInvestment: 0, + totalInvestmentValueWithCurrencyEffect: 0, + value: 0, + valueWithCurrencyEffect: 0 + }); - expect(chartData[0]).toEqual({ + expect(portfolioSnapshot.historicalData[1]).toEqual({ date: '2022-03-07', investmentValueWithCurrencyEffect: 151.6, netPerformance: 0, @@ -145,12 +150,16 @@ describe('PortfolioCalculator', () => { valueWithCurrencyEffect: 151.6 }); - expect(chartData[chartData.length - 1]).toEqual({ + expect( + portfolioSnapshot.historicalData[ + portfolioSnapshot.historicalData.length - 1 + ] + ).toEqual({ date: '2022-04-11', investmentValueWithCurrencyEffect: 0, netPerformance: 19.86, - netPerformanceInPercentage: 13.100263852242744, - netPerformanceInPercentageWithCurrencyEffect: 13.100263852242744, + netPerformanceInPercentage: 0.13100263852242744, + netPerformanceInPercentageWithCurrencyEffect: 0.13100263852242744, netPerformanceWithCurrencyEffect: 19.86, netWorth: 0, totalAccountBalance: 0, @@ -160,22 +169,10 @@ describe('PortfolioCalculator', () => { valueWithCurrencyEffect: 0 }); - expect(portfolioSnapshot).toEqual({ + expect(portfolioSnapshot).toMatchObject({ currentValueInBaseCurrency: new Big('0'), errors: [], - grossPerformance: new Big('19.86'), - grossPerformancePercentage: new Big('0.13100263852242744063'), - grossPerformancePercentageWithCurrencyEffect: new Big( - '0.13100263852242744063' - ), - grossPerformanceWithCurrencyEffect: new Big('19.86'), hasErrors: false, - netPerformance: new Big('19.86'), - netPerformancePercentage: new Big('0.13100263852242744063'), - netPerformancePercentageWithCurrencyEffect: new Big( - '0.13100263852242744063' - ), - netPerformanceWithCurrencyEffect: new Big('19.86'), positions: [ { averagePrice: new Big('0'), @@ -184,6 +181,7 @@ describe('PortfolioCalculator', () => { dividend: new Big('0'), dividendInBaseCurrency: new Big('0'), fee: new Big('0'), + feeInBaseCurrency: new Big('0'), firstBuyDate: '2022-03-07', grossPerformance: new Big('19.86'), grossPerformancePercentage: new Big('0.13100263852242744063'), @@ -195,10 +193,12 @@ describe('PortfolioCalculator', () => { investmentWithCurrencyEffect: new Big('0'), netPerformance: new Big('19.86'), netPerformancePercentage: new Big('0.13100263852242744063'), - netPerformancePercentageWithCurrencyEffect: new Big( - '0.13100263852242744063' - ), - netPerformanceWithCurrencyEffect: new Big('19.86'), + netPerformancePercentageWithCurrencyEffectMap: { + max: new Big('0.13100263852242744063') + }, + netPerformanceWithCurrencyEffectMap: { + max: new Big('19.86') + }, marketPrice: 87.8, marketPriceInBaseCurrency: 87.8, quantity: new Big('0'), @@ -218,6 +218,16 @@ describe('PortfolioCalculator', () => { totalValuablesWithCurrencyEffect: new Big('0') }); + expect(last(portfolioSnapshot.historicalData)).toMatchObject( + expect.objectContaining({ + netPerformance: 19.86, + netPerformanceInPercentage: 0.13100263852242744063, + netPerformanceInPercentageWithCurrencyEffect: 0.13100263852242744063, + netPerformanceWithCurrencyEffect: 19.86, + totalInvestmentValueWithCurrencyEffect: 0 + }) + ); + expect(investments).toEqual([ { date: '2022-03-07', investment: new Big('151.6') }, { date: '2022-04-08', investment: new Big('0') } diff --git a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts index 989b133a2..4f053355c 100644 --- a/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts @@ -1,25 +1,28 @@ -import { LogPerformance } from '@ghostfolio/api/aop/logging.interceptor'; import { PortfolioCalculator } from '@ghostfolio/api/app/portfolio/calculator/portfolio-calculator'; import { PortfolioOrderItem } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-order-item.interface'; import { getFactor } from '@ghostfolio/api/helper/portfolio.helper'; +import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; -import { SymbolMetrics, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + SymbolMetrics +} from '@ghostfolio/common/interfaces'; import { PortfolioSnapshot, TimelinePosition } from '@ghostfolio/common/models'; +import { DateRange } from '@ghostfolio/common/types'; import { Logger } from '@nestjs/common'; -import { DataSource } from '@prisma/client'; import { Big } from 'big.js'; import { addDays, addMilliseconds, differenceInDays, + eachDayOfInterval, format, isBefore } from 'date-fns'; import { cloneDeep, first, last, sortBy } from 'lodash'; export class TWRPortfolioCalculator extends PortfolioCalculator { - @LogPerformance protected calculateOverallPerformance( positions: TimelinePosition[] ): PortfolioSnapshot { @@ -28,7 +31,6 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { let grossPerformanceWithCurrencyEffect = new Big(0); let hasErrors = false; let netPerformance = new Big(0); - let netPerformanceWithCurrencyEffect = new Big(0); let totalFeesWithCurrencyEffect = new Big(0); let totalInterestWithCurrencyEffect = new Big(0); let totalInvestment = new Big(0); @@ -37,9 +39,9 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { let totalTimeWeightedInvestmentWithCurrencyEffect = new Big(0); for (const currentPosition of positions) { - if (currentPosition.fee) { + if (currentPosition.feeInBaseCurrency) { totalFeesWithCurrencyEffect = totalFeesWithCurrencyEffect.plus( - currentPosition.fee + currentPosition.feeInBaseCurrency ); } @@ -73,11 +75,6 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { ); netPerformance = netPerformance.plus(currentPosition.netPerformance); - - netPerformanceWithCurrencyEffect = - netPerformanceWithCurrencyEffect.plus( - currentPosition.netPerformanceWithCurrencyEffect - ); } else if (!currentPosition.quantity.eq(0)) { hasErrors = true; } @@ -103,59 +100,35 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { return { currentValueInBaseCurrency, - grossPerformance, - grossPerformanceWithCurrencyEffect, hasErrors, - netPerformance, - netPerformanceWithCurrencyEffect, positions, totalFeesWithCurrencyEffect, totalInterestWithCurrencyEffect, totalInvestment, totalInvestmentWithCurrencyEffect, - netPerformancePercentage: totalTimeWeightedInvestment.eq(0) - ? new Big(0) - : netPerformance.div(totalTimeWeightedInvestment), - netPerformancePercentageWithCurrencyEffect: - totalTimeWeightedInvestmentWithCurrencyEffect.eq(0) - ? new Big(0) - : netPerformanceWithCurrencyEffect.div( - totalTimeWeightedInvestmentWithCurrencyEffect - ), - grossPerformancePercentage: totalTimeWeightedInvestment.eq(0) - ? new Big(0) - : grossPerformance.div(totalTimeWeightedInvestment), - grossPerformancePercentageWithCurrencyEffect: - totalTimeWeightedInvestmentWithCurrencyEffect.eq(0) - ? new Big(0) - : grossPerformanceWithCurrencyEffect.div( - totalTimeWeightedInvestmentWithCurrencyEffect - ), + historicalData: [], totalLiabilitiesWithCurrencyEffect: new Big(0), totalValuablesWithCurrencyEffect: new Big(0) }; } - @LogPerformance protected getSymbolMetrics({ + chartDateMap, dataSource, end, exchangeRates, - isChartMode = false, marketSymbolMap, start, - step = 1, symbol }: { + chartDateMap?: { [date: string]: boolean }; end: Date; exchangeRates: { [dateString: string]: number }; - isChartMode?: boolean; marketSymbolMap: { [date: string]: { [symbol: string]: Big }; }; start: Date; - step?: number; - } & UniqueAsset): SymbolMetrics { + } & AssetProfileIdentifier): SymbolMetrics { const currentExchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)]; const currentValues: { [date: string]: Big } = {}; const currentValuesWithCurrencyEffect: { [date: string]: Big } = {}; @@ -190,7 +163,6 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { let totalAccountBalanceInBaseCurrency = new Big(0); let totalDividend = new Big(0); - let totalStakeRewards = new Big(0); let totalDividendInBaseCurrency = new Big(0); let totalInterest = new Big(0); let totalInterestInBaseCurrency = new Big(0); @@ -218,7 +190,6 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { return { currentValues: {}, currentValuesWithCurrencyEffect: {}, - unitPrices: {}, feesWithCurrencyEffect: new Big(0), grossPerformance: new Big(0), grossPerformancePercentage: new Big(0), @@ -232,11 +203,12 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { investmentValuesWithCurrencyEffect: {}, netPerformance: new Big(0), netPerformancePercentage: new Big(0), - netPerformancePercentageWithCurrencyEffect: new Big(0), + netPerformanceValuesPercentage: {}, + unitPrices: {}, + netPerformancePercentageWithCurrencyEffectMap: {}, netPerformanceValues: {}, netPerformanceValuesWithCurrencyEffect: {}, - netPerformanceValuesPercentage: {}, - netPerformanceWithCurrencyEffect: new Big(0), + netPerformanceWithCurrencyEffectMap: {}, timeWeightedInvestment: new Big(0), timeWeightedInvestmentValues: {}, timeWeightedInvestmentValuesWithCurrencyEffect: {}, @@ -270,7 +242,6 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { return { currentValues: {}, currentValuesWithCurrencyEffect: {}, - unitPrices: {}, feesWithCurrencyEffect: new Big(0), grossPerformance: new Big(0), grossPerformancePercentage: new Big(0), @@ -284,11 +255,10 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { investmentValuesWithCurrencyEffect: {}, netPerformance: new Big(0), netPerformancePercentage: new Big(0), - netPerformancePercentageWithCurrencyEffect: new Big(0), + netPerformancePercentageWithCurrencyEffectMap: {}, + netPerformanceWithCurrencyEffectMap: {}, netPerformanceValues: {}, netPerformanceValuesWithCurrencyEffect: {}, - netPerformanceValuesPercentage: {}, - netPerformanceWithCurrencyEffect: new Big(0), timeWeightedInvestment: new Big(0), timeWeightedInvestmentValues: {}, timeWeightedInvestmentValuesWithCurrencyEffect: {}, @@ -303,7 +273,9 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { totalLiabilities: new Big(0), totalLiabilitiesInBaseCurrency: new Big(0), totalValuables: new Big(0), - totalValuablesInBaseCurrency: new Big(0) + totalValuablesInBaseCurrency: new Big(0), + netPerformanceValuesPercentage: {}, + unitPrices: {} }; } @@ -339,17 +311,44 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { let day = start; let lastUnitPrice: Big; - ({ day, lastUnitPrice } = this.handleIsChartMode( - isChartMode, - orders, - day, - end, - dataSource, - symbol, - marketSymbolMap, - lastUnitPrice, - step - )); + const ordersByDate: { [date: string]: PortfolioOrderItem[] } = {}; + + for (const order of orders) { + ordersByDate[order.date] = ordersByDate[order.date] ?? []; + ordersByDate[order.date].push(order); + } + + while (isBefore(day, end)) { + const dateString = format(day, DATE_FORMAT); + + if (ordersByDate[dateString]?.length > 0) { + for (let order of ordersByDate[dateString]) { + order.unitPriceFromMarketData = + marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice; + } + } else if (chartDateMap[dateString]) { + orders.push({ + date: dateString, + fee: new Big(0), + feeInBaseCurrency: new Big(0), + quantity: new Big(0), + SymbolProfile: { + dataSource, + symbol + }, + type: 'BUY', + unitPrice: marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice, + unitPriceFromMarketData: + marketSymbolMap[dateString]?.[symbol] ?? lastUnitPrice + }); + } + + const lastOrder = last(orders); + + lastUnitPrice = lastOrder.unitPriceFromMarketData ?? lastOrder.unitPrice; + + day = addDays(day, 1); + } // Sort orders so that the start and end placeholder order are at the correct // position @@ -377,316 +376,6 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { let sumOfTimeWeightedInvestments = new Big(0); let sumOfTimeWeightedInvestmentsWithCurrencyEffect = new Big(0); - ({ - totalDividend, - totalDividendInBaseCurrency, - totalInterest, - totalInterestInBaseCurrency, - totalValuables, - totalValuablesInBaseCurrency, - totalLiabilities, - totalLiabilitiesInBaseCurrency, - totalUnits, - investmentAtStartDate, - totalInvestment, - investmentAtStartDateWithCurrencyEffect, - totalInvestmentWithCurrencyEffect, - valueAtStartDate, - valueAtStartDateWithCurrencyEffect, - totalQuantityFromBuyTransactions, - totalInvestmentFromBuyTransactions, - totalInvestmentFromBuyTransactionsWithCurrencyEffect, - initialValue, - initialValueWithCurrencyEffect, - fees, - feesWithCurrencyEffect, - lastAveragePrice, - lastAveragePriceWithCurrencyEffect, - grossPerformanceFromSells, - grossPerformanceFromSellsWithCurrencyEffect, - grossPerformance, - grossPerformanceWithCurrencyEffect, - feesAtStartDate, - feesAtStartDateWithCurrencyEffect, - grossPerformanceAtStartDate, - grossPerformanceAtStartDateWithCurrencyEffect, - totalInvestmentDays, - sumOfTimeWeightedInvestments, - sumOfTimeWeightedInvestmentsWithCurrencyEffect - } = this.handleOrders( - orders, - exchangeRates, - totalDividend, - totalDividendInBaseCurrency, - totalInterest, - totalInterestInBaseCurrency, - totalValuables, - totalValuablesInBaseCurrency, - totalLiabilities, - totalLiabilitiesInBaseCurrency, - indexOfStartOrder, - unitPriceAtStartDate, - currentExchangeRate, - marketSymbolMap, - symbol, - totalUnits, - investmentAtStartDate, - totalInvestment, - investmentAtStartDateWithCurrencyEffect, - totalInvestmentWithCurrencyEffect, - valueAtStartDate, - valueAtStartDateWithCurrencyEffect, - totalQuantityFromBuyTransactions, - totalInvestmentFromBuyTransactions, - totalInvestmentFromBuyTransactionsWithCurrencyEffect, - initialValue, - initialValueWithCurrencyEffect, - fees, - feesWithCurrencyEffect, - lastAveragePrice, - lastAveragePriceWithCurrencyEffect, - grossPerformanceFromSells, - grossPerformanceFromSellsWithCurrencyEffect, - grossPerformance, - grossPerformanceWithCurrencyEffect, - feesAtStartDate, - feesAtStartDateWithCurrencyEffect, - grossPerformanceAtStartDate, - grossPerformanceAtStartDateWithCurrencyEffect, - totalInvestmentDays, - sumOfTimeWeightedInvestments, - sumOfTimeWeightedInvestmentsWithCurrencyEffect, - isChartMode, - currentValues, - currentValuesWithCurrencyEffect, - netPerformanceValues, - netPerformanceValuesWithCurrencyEffect, - investmentValuesAccumulated, - investmentValuesAccumulatedWithCurrencyEffect, - investmentValuesWithCurrencyEffect, - timeWeightedInvestmentValues, - timeWeightedInvestmentValuesWithCurrencyEffect, - indexOfEndOrder - )); - - const totalGrossPerformance = grossPerformance.minus( - grossPerformanceAtStartDate - ); - - const totalGrossPerformanceWithCurrencyEffect = - grossPerformanceWithCurrencyEffect.minus( - grossPerformanceAtStartDateWithCurrencyEffect - ); - - const totalNetPerformance = grossPerformance - .minus(grossPerformanceAtStartDate) - .minus(fees.minus(feesAtStartDate)); - - const totalNetPerformanceWithCurrencyEffect = - grossPerformanceWithCurrencyEffect - .minus(grossPerformanceAtStartDateWithCurrencyEffect) - .minus(feesWithCurrencyEffect.minus(feesAtStartDateWithCurrencyEffect)); - - const timeWeightedAverageInvestmentBetweenStartAndEndDate = - totalInvestmentDays > 0 - ? sumOfTimeWeightedInvestments.div(totalInvestmentDays) - : new Big(0); - - const timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect = - totalInvestmentDays > 0 - ? sumOfTimeWeightedInvestmentsWithCurrencyEffect.div( - totalInvestmentDays - ) - : new Big(0); - - const grossPerformancePercentage = - timeWeightedAverageInvestmentBetweenStartAndEndDate.gt(0) - ? totalGrossPerformance.div( - timeWeightedAverageInvestmentBetweenStartAndEndDate - ) - : new Big(0); - - const grossPerformancePercentageWithCurrencyEffect = - timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.gt( - 0 - ) - ? totalGrossPerformanceWithCurrencyEffect.div( - timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect - ) - : new Big(0); - - const feesPerUnit = totalUnits.gt(0) - ? fees.minus(feesAtStartDate).div(totalUnits) - : new Big(0); - - const feesPerUnitWithCurrencyEffect = totalUnits.gt(0) - ? feesWithCurrencyEffect - .minus(feesAtStartDateWithCurrencyEffect) - .div(totalUnits) - : new Big(0); - - const netPerformancePercentage = - timeWeightedAverageInvestmentBetweenStartAndEndDate.gt(0) - ? totalNetPerformance.div( - timeWeightedAverageInvestmentBetweenStartAndEndDate - ) - : new Big(0); - - const netPerformancePercentageWithCurrencyEffect = - timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.gt( - 0 - ) - ? totalNetPerformanceWithCurrencyEffect.div( - timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect - ) - : new Big(0); - - if (PortfolioCalculator.ENABLE_LOGGING) { - console.log( - ` - ${symbol} - Unit price: ${orders[indexOfStartOrder].unitPrice.toFixed( - 2 - )} -> ${unitPriceAtEndDate.toFixed(2)} - Total investment: ${totalInvestment.toFixed(2)} - Total investment with currency effect: ${totalInvestmentWithCurrencyEffect.toFixed( - 2 - )} - Time weighted investment: ${timeWeightedAverageInvestmentBetweenStartAndEndDate.toFixed( - 2 - )} - Time weighted investment with currency effect: ${timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.toFixed( - 2 - )} - Total dividend: ${totalDividend.toFixed(2)} - Gross performance: ${totalGrossPerformance.toFixed( - 2 - )} / ${grossPerformancePercentage.mul(100).toFixed(2)}% - Gross performance with currency effect: ${totalGrossPerformanceWithCurrencyEffect.toFixed( - 2 - )} / ${grossPerformancePercentageWithCurrencyEffect - .mul(100) - .toFixed(2)}% - Fees per unit: ${feesPerUnit.toFixed(2)} - Fees per unit with currency effect: ${feesPerUnitWithCurrencyEffect.toFixed( - 2 - )} - Net performance: ${totalNetPerformance.toFixed( - 2 - )} / ${netPerformancePercentage.mul(100).toFixed(2)}% - Net performance with currency effect: ${totalNetPerformanceWithCurrencyEffect.toFixed( - 2 - )} / ${netPerformancePercentageWithCurrencyEffect.mul(100).toFixed(2)}%` - ); - } - - let unitPrices = Object.keys(marketSymbolMap) - .map((date) => { - return { [date]: marketSymbolMap[date][symbol] }; - }) - .reduce((map, u) => { - return { ...u, ...map }; - }, {}); - - return { - currentValues, - currentValuesWithCurrencyEffect, - unitPrices, - feesWithCurrencyEffect, - grossPerformancePercentage, - grossPerformancePercentageWithCurrencyEffect, - initialValue, - initialValueWithCurrencyEffect, - investmentValuesAccumulated, - investmentValuesAccumulatedWithCurrencyEffect, - investmentValuesWithCurrencyEffect, - netPerformancePercentage, - netPerformancePercentageWithCurrencyEffect, - netPerformanceValues, - netPerformanceValuesWithCurrencyEffect, - netPerformanceValuesPercentage: {}, - timeWeightedInvestmentValues, - timeWeightedInvestmentValuesWithCurrencyEffect, - totalAccountBalanceInBaseCurrency, - totalDividend, - totalDividendInBaseCurrency, - totalInterest, - totalInterestInBaseCurrency, - totalInvestment, - totalInvestmentWithCurrencyEffect, - totalLiabilities, - totalLiabilitiesInBaseCurrency, - totalValuables, - totalValuablesInBaseCurrency, - grossPerformance: totalGrossPerformance, - grossPerformanceWithCurrencyEffect: - totalGrossPerformanceWithCurrencyEffect, - hasErrors: totalUnits.gt(0) && (!initialValue || !unitPriceAtEndDate), - netPerformance: totalNetPerformance, - netPerformanceWithCurrencyEffect: totalNetPerformanceWithCurrencyEffect, - timeWeightedInvestment: - timeWeightedAverageInvestmentBetweenStartAndEndDate, - timeWeightedInvestmentWithCurrencyEffect: - timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect - }; - } - - @LogPerformance - protected handleOrders( - orders: PortfolioOrderItem[], - exchangeRates: { [dateString: string]: number }, - totalDividend, - totalDividendInBaseCurrency, - totalInterest, - totalInterestInBaseCurrency, - totalValuables, - totalValuablesInBaseCurrency, - totalLiabilities, - totalLiabilitiesInBaseCurrency, - indexOfStartOrder: number, - unitPriceAtStartDate: Big, - currentExchangeRate: number, - marketSymbolMap: { [date: string]: { [symbol: string]: Big } }, - symbol: string, - totalUnits, - investmentAtStartDate: Big, - totalInvestment, - investmentAtStartDateWithCurrencyEffect: Big, - totalInvestmentWithCurrencyEffect, - valueAtStartDate: Big, - valueAtStartDateWithCurrencyEffect: Big, - totalQuantityFromBuyTransactions, - totalInvestmentFromBuyTransactions, - totalInvestmentFromBuyTransactionsWithCurrencyEffect, - initialValue: Big, - initialValueWithCurrencyEffect: Big, - fees, - feesWithCurrencyEffect, - lastAveragePrice, - lastAveragePriceWithCurrencyEffect, - grossPerformanceFromSells, - grossPerformanceFromSellsWithCurrencyEffect, - grossPerformance, - grossPerformanceWithCurrencyEffect, - feesAtStartDate, - feesAtStartDateWithCurrencyEffect, - grossPerformanceAtStartDate, - grossPerformanceAtStartDateWithCurrencyEffect, - totalInvestmentDays: number, - sumOfTimeWeightedInvestments, - sumOfTimeWeightedInvestmentsWithCurrencyEffect, - isChartMode: boolean, - currentValues: { [date: string]: Big }, - currentValuesWithCurrencyEffect: { [date: string]: Big }, - netPerformanceValues: { [date: string]: Big }, - netPerformanceValuesWithCurrencyEffect: { [date: string]: Big }, - investmentValuesAccumulated: { [date: string]: Big }, - investmentValuesAccumulatedWithCurrencyEffect: { [date: string]: Big }, - investmentValuesWithCurrencyEffect: { [date: string]: Big }, - timeWeightedInvestmentValues: { [date: string]: Big }, - timeWeightedInvestmentValuesWithCurrencyEffect: { [date: string]: Big }, - indexOfEndOrder: number - ) { for (let i = 0; i < orders.length; i += 1) { const order = orders[i]; @@ -703,27 +392,35 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { const exchangeRateAtOrderDate = exchangeRates[order.date]; - ({ - totalDividend, - totalDividendInBaseCurrency, - totalInterest, - totalInterestInBaseCurrency, - totalValuables, - totalValuablesInBaseCurrency, - totalLiabilities, - totalLiabilitiesInBaseCurrency - } = this.handleOrderType( - order, - totalDividend, - totalDividendInBaseCurrency, - exchangeRateAtOrderDate, - totalInterest, - totalInterestInBaseCurrency, - totalValuables, - totalValuablesInBaseCurrency, - totalLiabilities, - totalLiabilitiesInBaseCurrency - )); + if (order.type === 'DIVIDEND') { + const dividend = order.quantity.mul(order.unitPrice); + + totalDividend = totalDividend.plus(dividend); + totalDividendInBaseCurrency = totalDividendInBaseCurrency.plus( + dividend.mul(exchangeRateAtOrderDate ?? 1) + ); + } else if (order.type === 'INTEREST') { + const interest = order.quantity.mul(order.unitPrice); + + totalInterest = totalInterest.plus(interest); + totalInterestInBaseCurrency = totalInterestInBaseCurrency.plus( + interest.mul(exchangeRateAtOrderDate ?? 1) + ); + } else if (order.type === 'ITEM') { + const valuables = order.quantity.mul(order.unitPrice); + + totalValuables = totalValuables.plus(valuables); + totalValuablesInBaseCurrency = totalValuablesInBaseCurrency.plus( + valuables.mul(exchangeRateAtOrderDate ?? 1) + ); + } else if (order.type === 'LIABILITY') { + const liabilities = order.quantity.mul(order.unitPrice); + + totalLiabilities = totalLiabilities.plus(liabilities); + totalLiabilitiesInBaseCurrency = totalLiabilitiesInBaseCurrency.plus( + liabilities.mul(exchangeRateAtOrderDate ?? 1) + ); + } if (order.itemType === 'start') { // Take the unit price of the order as the market price if there are no @@ -741,16 +438,14 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { ); } - if (order.type === 'STAKE') { - order.unitPrice = marketSymbolMap[order.date]?.[symbol] ?? new Big(0); - } + const unitPrice = ['BUY', 'SELL'].includes(order.type) + ? order.unitPrice + : order.unitPriceFromMarketData; - if (order.unitPrice) { - order.unitPriceInBaseCurrency = order.unitPrice.mul( - currentExchangeRate ?? 1 - ); + if (unitPrice) { + order.unitPriceInBaseCurrency = unitPrice.mul(currentExchangeRate ?? 1); - order.unitPriceInBaseCurrencyWithCurrencyEffect = order.unitPrice.mul( + order.unitPriceInBaseCurrencyWithCurrencyEffect = unitPrice.mul( exchangeRateAtOrderDate ?? 1 ); } @@ -777,23 +472,38 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { let transactionInvestment = new Big(0); let transactionInvestmentWithCurrencyEffect = new Big(0); - ({ - transactionInvestment, - transactionInvestmentWithCurrencyEffect, - totalQuantityFromBuyTransactions, - totalInvestmentFromBuyTransactions, - totalInvestmentFromBuyTransactionsWithCurrencyEffect - } = this.handleBuyAndSellOrders( - order, - transactionInvestment, - transactionInvestmentWithCurrencyEffect, - totalQuantityFromBuyTransactions, - totalInvestmentFromBuyTransactions, - totalInvestmentFromBuyTransactionsWithCurrencyEffect, - totalUnits, - totalInvestment, - totalInvestmentWithCurrencyEffect - )); + if (order.type === 'BUY') { + transactionInvestment = order.quantity + .mul(order.unitPriceInBaseCurrency) + .mul(getFactor(order.type)); + + transactionInvestmentWithCurrencyEffect = order.quantity + .mul(order.unitPriceInBaseCurrencyWithCurrencyEffect) + .mul(getFactor(order.type)); + + totalQuantityFromBuyTransactions = + totalQuantityFromBuyTransactions.plus(order.quantity); + + totalInvestmentFromBuyTransactions = + totalInvestmentFromBuyTransactions.plus(transactionInvestment); + + totalInvestmentFromBuyTransactionsWithCurrencyEffect = + totalInvestmentFromBuyTransactionsWithCurrencyEffect.plus( + transactionInvestmentWithCurrencyEffect + ); + } else if (order.type === 'SELL') { + if (totalUnits.gt(0)) { + transactionInvestment = totalInvestment + .div(totalUnits) + .mul(order.quantity) + .mul(getFactor(order.type)); + transactionInvestmentWithCurrencyEffect = + totalInvestmentWithCurrencyEffect + .div(totalUnits) + .mul(order.quantity) + .mul(getFactor(order.type)); + } + } if (PortfolioCalculator.ENABLE_LOGGING) { console.log('order.quantity', order.quantity.toNumber()); @@ -805,62 +515,110 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { ); } - let valueOfInvestment; - let valueOfInvestmentWithCurrencyEffect; - let totalInvestmentBeforeTransaction; - let totalInvestmentBeforeTransactionWithCurrencyEffect; - ({ - valueOfInvestment, - valueOfInvestmentWithCurrencyEffect, - totalInvestmentBeforeTransaction, - totalInvestmentBeforeTransactionWithCurrencyEffect, - totalInvestment, - totalInvestmentWithCurrencyEffect, - initialValue, - initialValueWithCurrencyEffect, - fees, - feesWithCurrencyEffect, - totalUnits - } = this.calculateInvestmentValues( - totalInvestment, - totalInvestmentWithCurrencyEffect, - transactionInvestment, - transactionInvestmentWithCurrencyEffect, - i, - indexOfStartOrder, - initialValue, - valueOfInvestmentBeforeTransaction, - initialValueWithCurrencyEffect, - valueOfInvestmentBeforeTransactionWithCurrencyEffect, - fees, - order, - feesWithCurrencyEffect, - totalUnits - )); - - ({ - lastAveragePrice, - lastAveragePriceWithCurrencyEffect, - grossPerformanceFromSells, - grossPerformanceFromSellsWithCurrencyEffect, - grossPerformance, - grossPerformanceWithCurrencyEffect - } = this.calculatePerformances( - order, - lastAveragePrice, - lastAveragePriceWithCurrencyEffect, - grossPerformanceFromSells, - grossPerformanceFromSellsWithCurrencyEffect, - totalQuantityFromBuyTransactions, - totalInvestmentFromBuyTransactions, - totalInvestmentFromBuyTransactionsWithCurrencyEffect, - valueOfInvestment, - totalInvestment, - valueOfInvestmentWithCurrencyEffect, - totalInvestmentWithCurrencyEffect, - grossPerformance, - grossPerformanceWithCurrencyEffect - )); + const totalInvestmentBeforeTransaction = totalInvestment; + + const totalInvestmentBeforeTransactionWithCurrencyEffect = + totalInvestmentWithCurrencyEffect; + + totalInvestment = totalInvestment.plus(transactionInvestment); + + totalInvestmentWithCurrencyEffect = + totalInvestmentWithCurrencyEffect.plus( + transactionInvestmentWithCurrencyEffect + ); + + if (i >= indexOfStartOrder && !initialValue) { + if ( + i === indexOfStartOrder && + !valueOfInvestmentBeforeTransaction.eq(0) + ) { + initialValue = valueOfInvestmentBeforeTransaction; + + initialValueWithCurrencyEffect = + valueOfInvestmentBeforeTransactionWithCurrencyEffect; + } else if (transactionInvestment.gt(0)) { + initialValue = transactionInvestment; + + initialValueWithCurrencyEffect = + transactionInvestmentWithCurrencyEffect; + } + } + + fees = fees.plus(order.feeInBaseCurrency ?? 0); + + feesWithCurrencyEffect = feesWithCurrencyEffect.plus( + order.feeInBaseCurrencyWithCurrencyEffect ?? 0 + ); + + totalUnits = totalUnits.plus(order.quantity.mul(getFactor(order.type))); + + const valueOfInvestment = totalUnits.mul(order.unitPriceInBaseCurrency); + + const valueOfInvestmentWithCurrencyEffect = totalUnits.mul( + order.unitPriceInBaseCurrencyWithCurrencyEffect + ); + + const grossPerformanceFromSell = + order.type === 'SELL' + ? order.unitPriceInBaseCurrency + .minus(lastAveragePrice) + .mul(order.quantity) + : new Big(0); + + const grossPerformanceFromSellWithCurrencyEffect = + order.type === 'SELL' + ? order.unitPriceInBaseCurrencyWithCurrencyEffect + .minus(lastAveragePriceWithCurrencyEffect) + .mul(order.quantity) + : new Big(0); + + grossPerformanceFromSells = grossPerformanceFromSells.plus( + grossPerformanceFromSell + ); + + grossPerformanceFromSellsWithCurrencyEffect = + grossPerformanceFromSellsWithCurrencyEffect.plus( + grossPerformanceFromSellWithCurrencyEffect + ); + + lastAveragePrice = totalQuantityFromBuyTransactions.eq(0) + ? new Big(0) + : totalInvestmentFromBuyTransactions.div( + totalQuantityFromBuyTransactions + ); + + lastAveragePriceWithCurrencyEffect = totalQuantityFromBuyTransactions.eq( + 0 + ) + ? new Big(0) + : totalInvestmentFromBuyTransactionsWithCurrencyEffect.div( + totalQuantityFromBuyTransactions + ); + + if (PortfolioCalculator.ENABLE_LOGGING) { + console.log( + 'grossPerformanceFromSells', + grossPerformanceFromSells.toNumber() + ); + console.log( + 'grossPerformanceFromSellWithCurrencyEffect', + grossPerformanceFromSellWithCurrencyEffect.toNumber() + ); + } + + const newGrossPerformance = valueOfInvestment + .minus(totalInvestment) + .plus(grossPerformanceFromSells); + + const newGrossPerformanceWithCurrencyEffect = + valueOfInvestmentWithCurrencyEffect + .minus(totalInvestmentWithCurrencyEffect) + .plus(grossPerformanceFromSellsWithCurrencyEffect); + + grossPerformance = newGrossPerformance; + + grossPerformanceWithCurrencyEffect = + newGrossPerformanceWithCurrencyEffect; if (order.itemType === 'start') { feesAtStartDate = fees; @@ -871,54 +629,83 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { grossPerformanceWithCurrencyEffect; } - if ( - i > indexOfStartOrder && - ['BUY', 'SELL', 'STAKE'].includes(order.type) - ) { + if (i > indexOfStartOrder) { // Only consider periods with an investment for the calculation of // the time weighted investment - ({ - totalInvestmentDays, - sumOfTimeWeightedInvestments, - sumOfTimeWeightedInvestmentsWithCurrencyEffect - } = this.calculateTimeWeightedInvestments( - valueOfInvestmentBeforeTransaction, - order, - orders, - i, - totalInvestmentDays, - sumOfTimeWeightedInvestments, - valueAtStartDate, - investmentAtStartDate, - totalInvestmentBeforeTransaction, - sumOfTimeWeightedInvestmentsWithCurrencyEffect, - valueAtStartDateWithCurrencyEffect, - investmentAtStartDateWithCurrencyEffect, - totalInvestmentBeforeTransactionWithCurrencyEffect, - isChartMode, - currentValues, - valueOfInvestment, - currentValuesWithCurrencyEffect, - valueOfInvestmentWithCurrencyEffect, - netPerformanceValues, - grossPerformance, - grossPerformanceAtStartDate, - fees, - feesAtStartDate, - netPerformanceValuesWithCurrencyEffect, - grossPerformanceWithCurrencyEffect, - grossPerformanceAtStartDateWithCurrencyEffect, - feesWithCurrencyEffect, - feesAtStartDateWithCurrencyEffect, - investmentValuesAccumulated, - totalInvestment, - investmentValuesAccumulatedWithCurrencyEffect, - totalInvestmentWithCurrencyEffect, - investmentValuesWithCurrencyEffect, - transactionInvestmentWithCurrencyEffect, - timeWeightedInvestmentValues, - timeWeightedInvestmentValuesWithCurrencyEffect - )); + if ( + valueOfInvestmentBeforeTransaction.gt(0) && + ['BUY', 'SELL'].includes(order.type) + ) { + // Calculate the number of days since the previous order + const orderDate = new Date(order.date); + const previousOrderDate = new Date(orders[i - 1].date); + + let daysSinceLastOrder = differenceInDays( + orderDate, + previousOrderDate + ); + if (daysSinceLastOrder <= 0) { + // The time between two activities on the same day is unknown + // -> Set it to the smallest floating point number greater than 0 + daysSinceLastOrder = Number.EPSILON; + } + + // Sum up the total investment days since the start date to calculate + // the time weighted investment + totalInvestmentDays += daysSinceLastOrder; + + sumOfTimeWeightedInvestments = sumOfTimeWeightedInvestments.add( + valueAtStartDate + .minus(investmentAtStartDate) + .plus(totalInvestmentBeforeTransaction) + .mul(daysSinceLastOrder) + ); + + sumOfTimeWeightedInvestmentsWithCurrencyEffect = + sumOfTimeWeightedInvestmentsWithCurrencyEffect.add( + valueAtStartDateWithCurrencyEffect + .minus(investmentAtStartDateWithCurrencyEffect) + .plus(totalInvestmentBeforeTransactionWithCurrencyEffect) + .mul(daysSinceLastOrder) + ); + } + + currentValues[order.date] = valueOfInvestment; + + currentValuesWithCurrencyEffect[order.date] = + valueOfInvestmentWithCurrencyEffect; + + netPerformanceValues[order.date] = grossPerformance + .minus(grossPerformanceAtStartDate) + .minus(fees.minus(feesAtStartDate)); + + netPerformanceValuesWithCurrencyEffect[order.date] = + grossPerformanceWithCurrencyEffect + .minus(grossPerformanceAtStartDateWithCurrencyEffect) + .minus( + feesWithCurrencyEffect.minus(feesAtStartDateWithCurrencyEffect) + ); + + investmentValuesAccumulated[order.date] = totalInvestment; + + investmentValuesAccumulatedWithCurrencyEffect[order.date] = + totalInvestmentWithCurrencyEffect; + + investmentValuesWithCurrencyEffect[order.date] = ( + investmentValuesWithCurrencyEffect[order.date] ?? new Big(0) + ).add(transactionInvestmentWithCurrencyEffect); + + timeWeightedInvestmentValues[order.date] = + totalInvestmentDays > 0 + ? sumOfTimeWeightedInvestments.div(totalInvestmentDays) + : new Big(0); + + timeWeightedInvestmentValuesWithCurrencyEffect[order.date] = + totalInvestmentDays > 0 + ? sumOfTimeWeightedInvestmentsWithCurrencyEffect.div( + totalInvestmentDays + ) + : new Big(0); } if (PortfolioCalculator.ENABLE_LOGGING) { @@ -946,473 +733,238 @@ export class TWRPortfolioCalculator extends PortfolioCalculator { break; } } - return { - totalDividend, - totalDividendInBaseCurrency, - totalInterest, - totalInterestInBaseCurrency, - totalValuables, - totalValuablesInBaseCurrency, - totalLiabilities, - totalLiabilitiesInBaseCurrency, - totalUnits, - investmentAtStartDate, - totalInvestment, - investmentAtStartDateWithCurrencyEffect, - totalInvestmentWithCurrencyEffect, - valueAtStartDate, - valueAtStartDateWithCurrencyEffect, - totalQuantityFromBuyTransactions, - totalInvestmentFromBuyTransactions, - totalInvestmentFromBuyTransactionsWithCurrencyEffect, - initialValue, - initialValueWithCurrencyEffect, - fees, - feesWithCurrencyEffect, - lastAveragePrice, - lastAveragePriceWithCurrencyEffect, - grossPerformanceFromSells, - grossPerformanceFromSellsWithCurrencyEffect, - grossPerformance, - grossPerformanceWithCurrencyEffect, - feesAtStartDate, - feesAtStartDateWithCurrencyEffect, - grossPerformanceAtStartDate, - grossPerformanceAtStartDateWithCurrencyEffect, - totalInvestmentDays, - sumOfTimeWeightedInvestments, - sumOfTimeWeightedInvestmentsWithCurrencyEffect - }; - } - @LogPerformance - protected calculateTimeWeightedInvestments( - valueOfInvestmentBeforeTransaction: any, - order: PortfolioOrderItem, - orders: PortfolioOrderItem[], - i: number, - totalInvestmentDays: number, - sumOfTimeWeightedInvestments: any, - valueAtStartDate: Big, - investmentAtStartDate: Big, - totalInvestmentBeforeTransaction: any, - sumOfTimeWeightedInvestmentsWithCurrencyEffect: any, - valueAtStartDateWithCurrencyEffect: Big, - investmentAtStartDateWithCurrencyEffect: Big, - totalInvestmentBeforeTransactionWithCurrencyEffect: any, - isChartMode: boolean, - currentValues: { [date: string]: Big }, - valueOfInvestment: any, - currentValuesWithCurrencyEffect: { [date: string]: Big }, - valueOfInvestmentWithCurrencyEffect: any, - netPerformanceValues: { [date: string]: Big }, - grossPerformance: any, - grossPerformanceAtStartDate: any, - fees: any, - feesAtStartDate: any, - netPerformanceValuesWithCurrencyEffect: { [date: string]: Big }, - grossPerformanceWithCurrencyEffect: any, - grossPerformanceAtStartDateWithCurrencyEffect: any, - feesWithCurrencyEffect: any, - feesAtStartDateWithCurrencyEffect: any, - investmentValuesAccumulated: { [date: string]: Big }, - totalInvestment: any, - investmentValuesAccumulatedWithCurrencyEffect: { [date: string]: Big }, - totalInvestmentWithCurrencyEffect: any, - investmentValuesWithCurrencyEffect: { [date: string]: Big }, - transactionInvestmentWithCurrencyEffect, - timeWeightedInvestmentValues: { [date: string]: Big }, - timeWeightedInvestmentValuesWithCurrencyEffect: { [date: string]: Big } - ) { - if (valueOfInvestmentBeforeTransaction.gt(0)) { - // Calculate the number of days since the previous order - const orderDate = new Date(order.date); - const previousOrderDate = new Date(orders[i - 1].date); - - let daysSinceLastOrder = differenceInDays(orderDate, previousOrderDate); - if (daysSinceLastOrder <= 0) { - // The time between two activities on the same day is unknown - // -> Set it to the smallest floating point number greater than 0 - daysSinceLastOrder = Number.EPSILON; - } - - // Sum up the total investment days since the start date to calculate - // the time weighted investment - totalInvestmentDays += daysSinceLastOrder; + const totalGrossPerformance = grossPerformance.minus( + grossPerformanceAtStartDate + ); - sumOfTimeWeightedInvestments = sumOfTimeWeightedInvestments.add( - valueAtStartDate - .minus(investmentAtStartDate) - .plus(totalInvestmentBeforeTransaction) - .mul(daysSinceLastOrder) + const totalGrossPerformanceWithCurrencyEffect = + grossPerformanceWithCurrencyEffect.minus( + grossPerformanceAtStartDateWithCurrencyEffect ); - sumOfTimeWeightedInvestmentsWithCurrencyEffect = - sumOfTimeWeightedInvestmentsWithCurrencyEffect.add( - valueAtStartDateWithCurrencyEffect - .minus(investmentAtStartDateWithCurrencyEffect) - .plus(totalInvestmentBeforeTransactionWithCurrencyEffect) - .mul(daysSinceLastOrder) - ); - } - - if (isChartMode) { - currentValues[order.date] = valueOfInvestment; - - currentValuesWithCurrencyEffect[order.date] = - valueOfInvestmentWithCurrencyEffect; - - netPerformanceValues[order.date] = grossPerformance - .minus(grossPerformanceAtStartDate) - .minus(fees.minus(feesAtStartDate)); - - netPerformanceValuesWithCurrencyEffect[order.date] = - grossPerformanceWithCurrencyEffect - .minus(grossPerformanceAtStartDateWithCurrencyEffect) - .minus( - feesWithCurrencyEffect.minus(feesAtStartDateWithCurrencyEffect) - ); - - investmentValuesAccumulated[order.date] = totalInvestment; - - investmentValuesAccumulatedWithCurrencyEffect[order.date] = - totalInvestmentWithCurrencyEffect; - - investmentValuesWithCurrencyEffect[order.date] = ( - investmentValuesWithCurrencyEffect[order.date] ?? new Big(0) - ).add(transactionInvestmentWithCurrencyEffect); - - timeWeightedInvestmentValues[order.date] = - totalInvestmentDays > 0 - ? sumOfTimeWeightedInvestments.div(totalInvestmentDays) - : new Big(0); - - timeWeightedInvestmentValuesWithCurrencyEffect[order.date] = - totalInvestmentDays > 0 - ? sumOfTimeWeightedInvestmentsWithCurrencyEffect.div( - totalInvestmentDays - ) - : new Big(0); - } - return { - totalInvestmentDays, - sumOfTimeWeightedInvestments, - sumOfTimeWeightedInvestmentsWithCurrencyEffect - }; - } + const totalNetPerformance = grossPerformance + .minus(grossPerformanceAtStartDate) + .minus(fees.minus(feesAtStartDate)); - @LogPerformance - protected calculatePerformances( - order: PortfolioOrderItem, - lastAveragePrice: any, - lastAveragePriceWithCurrencyEffect: any, - grossPerformanceFromSells: any, - grossPerformanceFromSellsWithCurrencyEffect: any, - totalQuantityFromBuyTransactions: any, - totalInvestmentFromBuyTransactions: any, - totalInvestmentFromBuyTransactionsWithCurrencyEffect: any, - valueOfInvestment: any, - totalInvestment: any, - valueOfInvestmentWithCurrencyEffect: any, - totalInvestmentWithCurrencyEffect: any, - grossPerformance: any, - grossPerformanceWithCurrencyEffect: any - ) { - const grossPerformanceFromSell = - order.type === 'SELL' - ? order.unitPriceInBaseCurrency - .minus(lastAveragePrice) - .mul(order.quantity) + const timeWeightedAverageInvestmentBetweenStartAndEndDate = + totalInvestmentDays > 0 + ? sumOfTimeWeightedInvestments.div(totalInvestmentDays) : new Big(0); - const grossPerformanceFromSellWithCurrencyEffect = - order.type === 'SELL' - ? order.unitPriceInBaseCurrencyWithCurrencyEffect - .minus(lastAveragePriceWithCurrencyEffect) - .mul(order.quantity) + const timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect = + totalInvestmentDays > 0 + ? sumOfTimeWeightedInvestmentsWithCurrencyEffect.div( + totalInvestmentDays + ) : new Big(0); - grossPerformanceFromSells = grossPerformanceFromSells.plus( - grossPerformanceFromSell - ); - - grossPerformanceFromSellsWithCurrencyEffect = - grossPerformanceFromSellsWithCurrencyEffect.plus( - grossPerformanceFromSellWithCurrencyEffect - ); - - lastAveragePrice = totalQuantityFromBuyTransactions.eq(0) - ? new Big(0) - : totalInvestmentFromBuyTransactions.div( - totalQuantityFromBuyTransactions - ); - - lastAveragePriceWithCurrencyEffect = totalQuantityFromBuyTransactions.eq(0) - ? new Big(0) - : totalInvestmentFromBuyTransactionsWithCurrencyEffect.div( - totalQuantityFromBuyTransactions - ); - - if (PortfolioCalculator.ENABLE_LOGGING) { - console.log( - 'grossPerformanceFromSells', - grossPerformanceFromSells.toNumber() - ); - console.log( - 'grossPerformanceFromSellWithCurrencyEffect', - grossPerformanceFromSellWithCurrencyEffect.toNumber() - ); - } - - const newGrossPerformance = valueOfInvestment - .minus(totalInvestment) - .plus(grossPerformanceFromSells); + const grossPerformancePercentage = + timeWeightedAverageInvestmentBetweenStartAndEndDate.gt(0) + ? totalGrossPerformance.div( + timeWeightedAverageInvestmentBetweenStartAndEndDate + ) + : new Big(0); - const newGrossPerformanceWithCurrencyEffect = - valueOfInvestmentWithCurrencyEffect - .minus(totalInvestmentWithCurrencyEffect) - .plus(grossPerformanceFromSellsWithCurrencyEffect); + const grossPerformancePercentageWithCurrencyEffect = + timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.gt( + 0 + ) + ? totalGrossPerformanceWithCurrencyEffect.div( + timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect + ) + : new Big(0); - grossPerformance = newGrossPerformance; + const feesPerUnit = totalUnits.gt(0) + ? fees.minus(feesAtStartDate).div(totalUnits) + : new Big(0); - grossPerformanceWithCurrencyEffect = newGrossPerformanceWithCurrencyEffect; - return { - lastAveragePrice, - lastAveragePriceWithCurrencyEffect, - grossPerformanceFromSells, - grossPerformanceFromSellsWithCurrencyEffect, - grossPerformance, - grossPerformanceWithCurrencyEffect - }; - } + const feesPerUnitWithCurrencyEffect = totalUnits.gt(0) + ? feesWithCurrencyEffect + .minus(feesAtStartDateWithCurrencyEffect) + .div(totalUnits) + : new Big(0); - @LogPerformance - protected calculateInvestmentValues( - totalInvestment: any, - totalInvestmentWithCurrencyEffect: any, - transactionInvestment, - transactionInvestmentWithCurrencyEffect, - i: number, - indexOfStartOrder: number, - initialValue: Big, - valueOfInvestmentBeforeTransaction: any, - initialValueWithCurrencyEffect: Big, - valueOfInvestmentBeforeTransactionWithCurrencyEffect: any, - fees: any, - order: PortfolioOrderItem, - feesWithCurrencyEffect: any, - totalUnits: any - ) { - const totalInvestmentBeforeTransaction = totalInvestment; - - const totalInvestmentBeforeTransactionWithCurrencyEffect = - totalInvestmentWithCurrencyEffect; - - totalInvestment = totalInvestment.plus(transactionInvestment); - - totalInvestmentWithCurrencyEffect = totalInvestmentWithCurrencyEffect.plus( - transactionInvestmentWithCurrencyEffect - ); + const netPerformancePercentage = + timeWeightedAverageInvestmentBetweenStartAndEndDate.gt(0) + ? totalNetPerformance.div( + timeWeightedAverageInvestmentBetweenStartAndEndDate + ) + : new Big(0); - if (i >= indexOfStartOrder && !initialValue) { - if ( - i === indexOfStartOrder && - !valueOfInvestmentBeforeTransaction.eq(0) - ) { - initialValue = valueOfInvestmentBeforeTransaction; + const netPerformancePercentageWithCurrencyEffectMap: { + [key: DateRange]: Big; + } = {}; - initialValueWithCurrencyEffect = - valueOfInvestmentBeforeTransactionWithCurrencyEffect; - } else if (transactionInvestment.gt(0)) { - initialValue = transactionInvestment; + const netPerformanceWithCurrencyEffectMap: { + [key: DateRange]: Big; + } = {}; - initialValueWithCurrencyEffect = - transactionInvestmentWithCurrencyEffect; + for (const dateRange of [ + '1d', + '1y', + '5y', + 'max', + 'mtd', + 'wtd', + 'ytd' + // TODO: + // ...eachYearOfInterval({ end, start }) + // .filter((date) => { + // return !isThisYear(date); + // }) + // .map((date) => { + // return format(date, 'yyyy'); + // }) + ]) { + // TODO: getIntervalFromDateRange(dateRange, start) + let { endDate, startDate } = getIntervalFromDateRange(dateRange); + + if (isBefore(startDate, start)) { + startDate = start; } - } - fees = fees.plus(order.feeInBaseCurrency ?? 0); - - feesWithCurrencyEffect = feesWithCurrencyEffect.plus( - order.feeInBaseCurrencyWithCurrencyEffect ?? 0 - ); + const currentValuesAtDateRangeStartWithCurrencyEffect = + currentValuesWithCurrencyEffect[format(startDate, DATE_FORMAT)] ?? + new Big(0); - totalUnits = totalUnits.plus(order.quantity.mul(getFactor(order.type))); + const investmentValuesAccumulatedAtStartDateWithCurrencyEffect = + investmentValuesAccumulatedWithCurrencyEffect[ + format(startDate, DATE_FORMAT) + ] ?? new Big(0); - const valueOfInvestment = totalUnits.mul(order.unitPriceInBaseCurrency); - - const valueOfInvestmentWithCurrencyEffect = totalUnits.mul( - order.unitPriceInBaseCurrencyWithCurrencyEffect - ); - return { - valueOfInvestment, - valueOfInvestmentWithCurrencyEffect, - totalInvestmentBeforeTransaction, - totalInvestmentBeforeTransactionWithCurrencyEffect, - totalInvestment, - totalInvestmentWithCurrencyEffect, - initialValue, - initialValueWithCurrencyEffect, - fees, - feesWithCurrencyEffect, - totalUnits - }; - } - - @LogPerformance - protected handleBuyAndSellOrders( - order: PortfolioOrderItem, - transactionInvestment, - transactionInvestmentWithCurrencyEffect, - totalQuantityFromBuyTransactions: any, - totalInvestmentFromBuyTransactions: any, - totalInvestmentFromBuyTransactionsWithCurrencyEffect: any, - totalUnits: any, - totalInvestment: any, - totalInvestmentWithCurrencyEffect: any - ) { - if (order.type === 'BUY') { - transactionInvestment = order.quantity - .mul(order.unitPriceInBaseCurrency) - .mul(getFactor(order.type)); - - transactionInvestmentWithCurrencyEffect = order.quantity - .mul(order.unitPriceInBaseCurrencyWithCurrencyEffect) - .mul(getFactor(order.type)); - - totalQuantityFromBuyTransactions = totalQuantityFromBuyTransactions.plus( - order.quantity - ); + const grossPerformanceAtDateRangeStartWithCurrencyEffect = + currentValuesAtDateRangeStartWithCurrencyEffect.minus( + investmentValuesAccumulatedAtStartDateWithCurrencyEffect + ); - totalInvestmentFromBuyTransactions = - totalInvestmentFromBuyTransactions.plus(transactionInvestment); + const dates = eachDayOfInterval({ + end: endDate, + start: startDate + }).map((date) => { + return format(date, DATE_FORMAT); + }); + + let average = new Big(0); + let dayCount = 0; + + for (const date of dates) { + if ( + investmentValuesAccumulatedWithCurrencyEffect[date] instanceof Big && + investmentValuesAccumulatedWithCurrencyEffect[date].gt(0) + ) { + average = average.add( + investmentValuesAccumulatedWithCurrencyEffect[date].add( + grossPerformanceAtDateRangeStartWithCurrencyEffect + ) + ); - totalInvestmentFromBuyTransactionsWithCurrencyEffect = - totalInvestmentFromBuyTransactionsWithCurrencyEffect.plus( - transactionInvestmentWithCurrencyEffect - ); - } else if (order.type === 'SELL') { - if (totalUnits.gt(0)) { - transactionInvestment = totalInvestment - .div(totalUnits) - .mul(order.quantity) - .mul(getFactor(order.type)); - transactionInvestmentWithCurrencyEffect = - totalInvestmentWithCurrencyEffect - .div(totalUnits) - .mul(order.quantity) - .mul(getFactor(order.type)); + dayCount++; + } } - } - return { - transactionInvestment, - transactionInvestmentWithCurrencyEffect, - totalQuantityFromBuyTransactions, - totalInvestmentFromBuyTransactions, - totalInvestmentFromBuyTransactionsWithCurrencyEffect - }; - } - @LogPerformance - protected handleOrderType( - order: PortfolioOrderItem, - totalDividend: any, - totalDividendInBaseCurrency: any, - exchangeRateAtOrderDate: number, - totalInterest: any, - totalInterestInBaseCurrency: any, - totalValuables: any, - totalValuablesInBaseCurrency: any, - totalLiabilities: any, - totalLiabilitiesInBaseCurrency: any - ) { - if (order.type === 'DIVIDEND') { - const dividend = order.quantity.mul(order.unitPrice); - - totalDividend = totalDividend.plus(dividend); - totalDividendInBaseCurrency = totalDividendInBaseCurrency.plus( - dividend.mul(exchangeRateAtOrderDate ?? 1) - ); - } else if (order.type === 'INTEREST') { - const interest = order.quantity.mul(order.unitPrice); - - totalInterest = totalInterest.plus(interest); - totalInterestInBaseCurrency = totalInterestInBaseCurrency.plus( - interest.mul(exchangeRateAtOrderDate ?? 1) - ); - } else if (order.type === 'ITEM') { - const valuables = order.quantity.mul(order.unitPrice); + if (dayCount > 0) { + average = average.div(dayCount); + } - totalValuables = totalValuables.plus(valuables); - totalValuablesInBaseCurrency = totalValuablesInBaseCurrency.plus( - valuables.mul(exchangeRateAtOrderDate ?? 1) - ); - } else if (order.type === 'LIABILITY') { - const liabilities = order.quantity.mul(order.unitPrice); + netPerformanceWithCurrencyEffectMap[dateRange] = + netPerformanceValuesWithCurrencyEffect[ + format(endDate, DATE_FORMAT) + ]?.minus( + // If the date range is 'max', take 0 as a start value. Otherwise, + // the value of the end of the day of the start date is taken which + // differs from the buying price. + dateRange === 'max' + ? new Big(0) + : (netPerformanceValuesWithCurrencyEffect[ + format(startDate, DATE_FORMAT) + ] ?? new Big(0)) + ) ?? new Big(0); + + netPerformancePercentageWithCurrencyEffectMap[dateRange] = average.gt(0) + ? netPerformanceWithCurrencyEffectMap[dateRange].div(average) + : new Big(0); + } - totalLiabilities = totalLiabilities.plus(liabilities); - totalLiabilitiesInBaseCurrency = totalLiabilitiesInBaseCurrency.plus( - liabilities.mul(exchangeRateAtOrderDate ?? 1) + if (PortfolioCalculator.ENABLE_LOGGING) { + console.log( + ` + ${symbol} + Unit price: ${orders[indexOfStartOrder].unitPrice.toFixed( + 2 + )} -> ${unitPriceAtEndDate.toFixed(2)} + Total investment: ${totalInvestment.toFixed(2)} + Total investment with currency effect: ${totalInvestmentWithCurrencyEffect.toFixed( + 2 + )} + Time weighted investment: ${timeWeightedAverageInvestmentBetweenStartAndEndDate.toFixed( + 2 + )} + Time weighted investment with currency effect: ${timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.toFixed( + 2 + )} + Total dividend: ${totalDividend.toFixed(2)} + Gross performance: ${totalGrossPerformance.toFixed( + 2 + )} / ${grossPerformancePercentage.mul(100).toFixed(2)}% + Gross performance with currency effect: ${totalGrossPerformanceWithCurrencyEffect.toFixed( + 2 + )} / ${grossPerformancePercentageWithCurrencyEffect + .mul(100) + .toFixed(2)}% + Fees per unit: ${feesPerUnit.toFixed(2)} + Fees per unit with currency effect: ${feesPerUnitWithCurrencyEffect.toFixed( + 2 + )} + Net performance: ${totalNetPerformance.toFixed( + 2 + )} / ${netPerformancePercentage.mul(100).toFixed(2)}% + Net performance with currency effect: ${netPerformancePercentageWithCurrencyEffectMap[ + 'max' + ].toFixed(2)}%` ); } + return { + currentValues, + currentValuesWithCurrencyEffect, + feesWithCurrencyEffect, + grossPerformancePercentage, + grossPerformancePercentageWithCurrencyEffect, + initialValue, + initialValueWithCurrencyEffect, + investmentValuesAccumulated, + investmentValuesAccumulatedWithCurrencyEffect, + investmentValuesWithCurrencyEffect, + netPerformancePercentage, + netPerformancePercentageWithCurrencyEffectMap, + netPerformanceValues, + netPerformanceValuesWithCurrencyEffect, + netPerformanceWithCurrencyEffectMap, + timeWeightedInvestmentValues, + timeWeightedInvestmentValuesWithCurrencyEffect, + totalAccountBalanceInBaseCurrency, totalDividend, totalDividendInBaseCurrency, totalInterest, totalInterestInBaseCurrency, + totalInvestment, + totalInvestmentWithCurrencyEffect, + totalLiabilities, + totalLiabilitiesInBaseCurrency, totalValuables, totalValuablesInBaseCurrency, - totalLiabilities, - totalLiabilitiesInBaseCurrency + grossPerformance: totalGrossPerformance, + grossPerformanceWithCurrencyEffect: + totalGrossPerformanceWithCurrencyEffect, + hasErrors: totalUnits.gt(0) && (!initialValue || !unitPriceAtEndDate), + netPerformance: totalNetPerformance, + timeWeightedInvestment: + timeWeightedAverageInvestmentBetweenStartAndEndDate, + timeWeightedInvestmentWithCurrencyEffect: + timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect, + netPerformanceValuesPercentage: {}, + unitPrices: {} }; } - - @LogPerformance - protected handleIsChartMode( - isChartMode: boolean, - orders: PortfolioOrderItem[], - day: Date, - end: Date, - dataSource: DataSource, - symbol: string, - marketSymbolMap: { [date: string]: { [symbol: string]: Big } }, - lastUnitPrice: Big, - step: number - ) { - if (isChartMode) { - const datesWithOrders = {}; - - for (const { date, type } of orders) { - if (['BUY', 'SELL', 'STAKE'].includes(type)) { - datesWithOrders[date] = true; - } - } - - while (isBefore(day, end)) { - const hasDate = datesWithOrders[format(day, DATE_FORMAT)]; - - if (!hasDate) { - orders.push({ - date: format(day, DATE_FORMAT), - fee: new Big(0), - feeInBaseCurrency: new Big(0), - quantity: new Big(0), - SymbolProfile: { - dataSource, - symbol - }, - type: 'BUY', - unitPrice: - marketSymbolMap[format(day, DATE_FORMAT)]?.[symbol] ?? - lastUnitPrice - }); - } - - lastUnitPrice = last(orders).unitPrice; - - day = addDays(day, step); - } - } - return { day, lastUnitPrice }; - } } diff --git a/apps/api/src/app/portfolio/current-rate.service.mock.ts b/apps/api/src/app/portfolio/current-rate.service.mock.ts index 8ac1d15bd..313b09d67 100644 --- a/apps/api/src/app/portfolio/current-rate.service.mock.ts +++ b/apps/api/src/app/portfolio/current-rate.service.mock.ts @@ -1,6 +1,12 @@ import { parseDate, resetHours } from '@ghostfolio/common/helper'; -import { addDays, endOfDay, isBefore, isSameDay } from 'date-fns'; +import { + addDays, + eachDayOfInterval, + endOfDay, + isBefore, + isSameDay +} from 'date-fns'; import { GetValueObject } from './interfaces/get-value-object.interface'; import { GetValuesObject } from './interfaces/get-values-object.interface'; @@ -24,6 +30,10 @@ function mockGetValue(symbol: string, date: Date) { return { marketPrice: 139.9 }; } else if (isSameDay(parseDate('2021-11-30'), date)) { return { marketPrice: 136.6 }; + } else if (isSameDay(parseDate('2021-12-12'), date)) { + return { marketPrice: 142.0 }; + } else if (isSameDay(parseDate('2021-12-17'), date)) { + return { marketPrice: 143.9 }; } else if (isSameDay(parseDate('2021-12-18'), date)) { return { marketPrice: 148.9 }; } @@ -97,7 +107,10 @@ export const CurrentRateServiceMock = { } } } else { - for (const date of dateQuery.in) { + for (const date of eachDayOfInterval({ + end: dateQuery.lt, + start: dateQuery.gte + })) { for (const dataGatheringItem of dataGatheringItems) { values.push({ date, diff --git a/apps/api/src/app/portfolio/current-rate.service.spec.ts b/apps/api/src/app/portfolio/current-rate.service.spec.ts index 9b0548522..c86dde448 100644 --- a/apps/api/src/app/portfolio/current-rate.service.spec.ts +++ b/apps/api/src/app/portfolio/current-rate.service.spec.ts @@ -1,7 +1,7 @@ import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { DataSource, MarketData } from '@prisma/client'; @@ -24,32 +24,32 @@ jest.mock('@ghostfolio/api/services/market-data/market-data.service', () => { }); }, getRange: ({ + assetProfileIdentifiers, dateRangeEnd, - dateRangeStart, - uniqueAssets + dateRangeStart }: { + assetProfileIdentifiers: AssetProfileIdentifier[]; dateRangeEnd: Date; dateRangeStart: Date; - uniqueAssets: UniqueAsset[]; }) => { return Promise.resolve([ { createdAt: dateRangeStart, - dataSource: uniqueAssets[0].dataSource, + dataSource: assetProfileIdentifiers[0].dataSource, date: dateRangeStart, id: '8fa48fde-f397-4b0d-adbc-fb940e830e6d', marketPrice: 1841.823902, state: 'CLOSE', - symbol: uniqueAssets[0].symbol + symbol: assetProfileIdentifiers[0].symbol }, { createdAt: dateRangeEnd, - dataSource: uniqueAssets[0].dataSource, + dataSource: assetProfileIdentifiers[0].dataSource, date: dateRangeEnd, id: '082d6893-df27-4c91-8a5d-092e84315b56', marketPrice: 1847.839966, state: 'CLOSE', - symbol: uniqueAssets[0].symbol + symbol: assetProfileIdentifiers[0].symbol } ]); } diff --git a/apps/api/src/app/portfolio/current-rate.service.ts b/apps/api/src/app/portfolio/current-rate.service.ts index bc9bd5572..24119162d 100644 --- a/apps/api/src/app/portfolio/current-rate.service.ts +++ b/apps/api/src/app/portfolio/current-rate.service.ts @@ -1,13 +1,11 @@ import { OrderService } from '@ghostfolio/api/app/order/order.service'; -import { DateQueryHelper } from '@ghostfolio/api/helper/dateQueryHelper'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; -import { IDataGatheringItem } from '@ghostfolio/api/services/interfaces/interfaces'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { resetHours } from '@ghostfolio/common/helper'; import { + AssetProfileIdentifier, DataProviderInfo, - ResponseError, - UniqueAsset + ResponseError } from '@ghostfolio/common/interfaces'; import type { RequestWithUser } from '@ghostfolio/common/types'; @@ -22,8 +20,6 @@ import { GetValuesParams } from './interfaces/get-values-params.interface'; @Injectable() export class CurrentRateService { - private dateQueryHelper = new DateQueryHelper(); - public constructor( private readonly dataProviderService: DataProviderService, private readonly marketDataService: MarketDataService, @@ -42,33 +38,58 @@ export class CurrentRateService { (!dateQuery.lt || isBefore(new Date(), dateQuery.lt)) && (!dateQuery.gte || isBefore(dateQuery.gte, new Date())) && (!dateQuery.in || this.containsToday(dateQuery.in)); - let { query, dates } = this.dateQueryHelper.handleDateQueryIn(dateQuery); + const promises: Promise[] = []; const quoteErrors: ResponseError['errors'] = []; const today = resetHours(new Date()); if (includesToday) { promises.push( - this.getTodayPrivate( - dataGatheringItems, - dataProviderInfos, - today, - quoteErrors - ) + this.dataProviderService + .getQuotes({ items: dataGatheringItems, user: this.request?.user }) + .then((dataResultProvider) => { + const result: GetValueObject[] = []; + + for (const dataGatheringItem of dataGatheringItems) { + if ( + dataResultProvider?.[dataGatheringItem.symbol]?.dataProviderInfo + ) { + dataProviderInfos.push( + dataResultProvider[dataGatheringItem.symbol].dataProviderInfo + ); + } + + if (dataResultProvider?.[dataGatheringItem.symbol]?.marketPrice) { + result.push({ + dataSource: dataGatheringItem.dataSource, + date: today, + marketPrice: + dataResultProvider?.[dataGatheringItem.symbol]?.marketPrice, + symbol: dataGatheringItem.symbol + }); + } else { + quoteErrors.push({ + dataSource: dataGatheringItem.dataSource, + symbol: dataGatheringItem.symbol + }); + } + } + + return result; + }) ); } - const uniqueAssets: UniqueAsset[] = dataGatheringItems.map( - ({ dataSource, symbol }) => { + const assetProfileIdentifiers: AssetProfileIdentifier[] = + dataGatheringItems.map(({ dataSource, symbol }) => { return { dataSource, symbol }; - } - ); + }); promises.push( this.marketDataService .getRange({ - dateQuery: query, - uniqueAssets + assetProfileIdentifiers, + dateQuery }) .then((data) => { return data.map(({ dataSource, date, marketPrice, symbol }) => { @@ -89,12 +110,9 @@ export class CurrentRateService { errors: quoteErrors.map(({ dataSource, symbol }) => { return { dataSource, symbol }; }), - values: uniqBy(values, ({ date, symbol }) => `${date}-${symbol}`).filter( - (v) => - dates?.length === 0 || - dates.some((d: Date) => d.getTime() === v.date.getTime()) - ) + values: uniqBy(values, ({ date, symbol }) => `${date}-${symbol}`) }; + if (!isEmpty(quoteErrors)) { for (const { dataSource, symbol } of quoteErrors) { try { @@ -144,61 +162,6 @@ export class CurrentRateService { return response; } - public async getToday( - dataGatheringItems: IDataGatheringItem[] - ): Promise { - const dataProviderInfos: DataProviderInfo[] = []; - const quoteErrors: UniqueAsset[] = []; - const today = resetHours(new Date()); - - return this.getTodayPrivate( - dataGatheringItems, - dataProviderInfos, - today, - quoteErrors - ); - } - - private async getTodayPrivate( - dataGatheringItems: IDataGatheringItem[], - dataProviderInfos: DataProviderInfo[], - today: Date, - quoteErrors: UniqueAsset[] - ): Promise { - return this.dataProviderService - .getQuotes({ items: dataGatheringItems, user: this.request?.user }) - .then((dataResultProvider) => { - const result: GetValueObject[] = []; - - for (const dataGatheringItem of dataGatheringItems) { - if ( - dataResultProvider?.[dataGatheringItem.symbol]?.dataProviderInfo - ) { - dataProviderInfos.push( - dataResultProvider[dataGatheringItem.symbol].dataProviderInfo - ); - } - - if (dataResultProvider?.[dataGatheringItem.symbol]?.marketPrice) { - result.push({ - dataSource: dataGatheringItem.dataSource, - date: today, - marketPrice: - dataResultProvider?.[dataGatheringItem.symbol]?.marketPrice, - symbol: dataGatheringItem.symbol - }); - } else { - quoteErrors.push({ - dataSource: dataGatheringItem.dataSource, - symbol: dataGatheringItem.symbol - }); - } - } - - return result; - }); - } - private containsToday(dates: Date[]): boolean { for (const date of dates) { if (isToday(date)) { diff --git a/apps/api/src/app/portfolio/interfaces/get-value-object.interface.ts b/apps/api/src/app/portfolio/interfaces/get-value-object.interface.ts index 6c42d260c..34b426693 100644 --- a/apps/api/src/app/portfolio/interfaces/get-value-object.interface.ts +++ b/apps/api/src/app/portfolio/interfaces/get-value-object.interface.ts @@ -1,6 +1,6 @@ -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; -export interface GetValueObject extends UniqueAsset { +export interface GetValueObject extends AssetProfileIdentifier { date: Date; marketPrice: number; } diff --git a/apps/api/src/app/portfolio/interfaces/portfolio-order-item.interface.ts b/apps/api/src/app/portfolio/interfaces/portfolio-order-item.interface.ts index 9a3354868..5048e8f9e 100644 --- a/apps/api/src/app/portfolio/interfaces/portfolio-order-item.interface.ts +++ b/apps/api/src/app/portfolio/interfaces/portfolio-order-item.interface.ts @@ -6,6 +6,7 @@ export interface PortfolioOrderItem extends PortfolioOrder { feeInBaseCurrency?: Big; feeInBaseCurrencyWithCurrencyEffect?: Big; itemType?: 'end' | 'start'; + unitPriceFromMarketData?: Big; unitPriceInBaseCurrency?: Big; unitPriceInBaseCurrencyWithCurrencyEffect?: Big; } diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 562387f5a..b2be4c934 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -2,12 +2,12 @@ import { LogPerformance } from '@ghostfolio/api/aop/logging.interceptor'; import { AccessService } from '@ghostfolio/api/app/access/access.service'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; +import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { hasNotDefinedValuesInObject, nullifyValuesInObject } from '@ghostfolio/api/helper/object.helper'; -import { getInterval } from '@ghostfolio/api/helper/portfolio.helper'; import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response/redact-values-in-response.interceptor'; import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor'; @@ -15,6 +15,7 @@ import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; +import { getIntervalFromDateRange } from '@ghostfolio/common/calculation-helper'; import { DEFAULT_CURRENCY, HEADER_KEY_IMPERSONATION @@ -30,7 +31,8 @@ import { } from '@ghostfolio/common/interfaces'; import { hasReadRestrictedAccessPermission, - isRestrictedView + isRestrictedView, + permissions } from '@ghostfolio/common/permissions'; import type { DateRange, @@ -39,12 +41,14 @@ import type { } from '@ghostfolio/common/types'; import { + Body, Controller, Get, Headers, HttpException, Inject, Param, + Put, Query, UseGuards, UseInterceptors, @@ -52,12 +56,13 @@ import { } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; -import { AssetClass, AssetSubClass } from '@prisma/client'; +import { AssetClass, AssetSubClass, DataSource } from '@prisma/client'; import { Big } from 'big.js'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { PortfolioHoldingDetail } from './interfaces/portfolio-holding-detail.interface'; import { PortfolioService } from './portfolio.service'; +import { UpdateHoldingTagsDto } from './update-holding-tags.dto'; @Controller('portfolio') export class PortfolioController { @@ -224,6 +229,7 @@ export class PortfolioController { : undefined, countries: hasDetails ? portfolioPosition.countries : [], currency: hasDetails ? portfolioPosition.currency : undefined, + holdings: hasDetails ? portfolioPosition.holdings : [], markets: hasDetails ? portfolioPosition.markets : undefined, marketsAdvanced: hasDetails ? portfolioPosition.marketsAdvanced @@ -261,7 +267,7 @@ export class PortfolioController { await this.impersonationService.validateImpersonationId(impersonationId); const userCurrency = this.request.user.Settings.settings.baseCurrency; - const { endDate, startDate } = getInterval(dateRange); + const { endDate, startDate } = getIntervalFromDateRange(dateRange); const { activities } = await this.orderService.getOrders({ endDate, @@ -517,9 +523,6 @@ export class PortfolioController { @Param('accessId') accessId ): Promise { const access = await this.accessService.access({ id: accessId }); - const user = await this.userService.user({ - id: access.userId - }); if (!access) { throw new HttpException( @@ -529,6 +532,11 @@ export class PortfolioController { } let hasDetails = true; + + const user = await this.userService.user({ + id: access.userId + }); + if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { hasDetails = user.subscription.type === 'Premium'; } @@ -585,23 +593,23 @@ export class PortfolioController { @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async getPosition( @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, - @Param('dataSource') dataSource, - @Param('symbol') symbol + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string ): Promise { - const position = await this.portfolioService.getPosition( + const holding = await this.portfolioService.getPosition( dataSource, impersonationId, symbol ); - if (position) { - return position; + if (!holding) { + throw new HttpException( + getReasonPhrase(StatusCodes.NOT_FOUND), + StatusCodes.NOT_FOUND + ); } - throw new HttpException( - getReasonPhrase(StatusCodes.NOT_FOUND), - StatusCodes.NOT_FOUND - ); + return holding; } @Get('report') @@ -624,4 +632,36 @@ export class PortfolioController { return report; } + + @HasPermission(permissions.updateOrder) + @Put('position/:dataSource/:symbol/tags') + @UseInterceptors(TransformDataSourceInRequestInterceptor) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async updateHoldingTags( + @Body() data: UpdateHoldingTagsDto, + @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string + ): Promise { + const holding = await this.portfolioService.getPosition( + dataSource, + impersonationId, + symbol + ); + + if (!holding) { + throw new HttpException( + getReasonPhrase(StatusCodes.NOT_FOUND), + StatusCodes.NOT_FOUND + ); + } + + await this.portfolioService.updateTags({ + dataSource, + impersonationId, + symbol, + tags: data.tags, + userId: this.request.user.id + }); + } } diff --git a/apps/api/src/app/portfolio/portfolio.service.spec.ts b/apps/api/src/app/portfolio/portfolio.service.spec.ts deleted file mode 100644 index 92970f547..000000000 --- a/apps/api/src/app/portfolio/portfolio.service.spec.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Big } from 'big.js'; - -import { PortfolioService } from './portfolio.service'; - -describe('PortfolioService', () => { - let portfolioService: PortfolioService; - - beforeAll(async () => { - portfolioService = new PortfolioService( - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null - ); - }); - - describe('annualized performance percentage', () => { - it('Get annualized performance', async () => { - expect( - portfolioService - .getAnnualizedPerformancePercent({ - daysInMarket: NaN, // differenceInDays of date-fns returns NaN for the same day - netPerformancePercentage: new Big(0) - }) - .toNumber() - ).toEqual(0); - - expect( - portfolioService - .getAnnualizedPerformancePercent({ - daysInMarket: 0, - netPerformancePercentage: new Big(0) - }) - .toNumber() - ).toEqual(0); - - /** - * Source: https://www.readyratios.com/reference/analysis/annualized_rate.html - */ - expect( - portfolioService - .getAnnualizedPerformancePercent({ - daysInMarket: 65, // < 1 year - netPerformancePercentage: new Big(0.1025) - }) - .toNumber() - ).toBeCloseTo(0.729705); - - expect( - portfolioService - .getAnnualizedPerformancePercent({ - daysInMarket: 365, // 1 year - netPerformancePercentage: new Big(0.05) - }) - .toNumber() - ).toBeCloseTo(0.05); - - /** - * Source: https://www.investopedia.com/terms/a/annualized-total-return.asp#annualized-return-formula-and-calculation - */ - expect( - portfolioService - .getAnnualizedPerformancePercent({ - daysInMarket: 575, // > 1 year - netPerformancePercentage: new Big(0.2374) - }) - .toNumber() - ).toBeCloseTo(0.145); - }); - }); -}); diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 633fe9e1d..36972e082 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -5,10 +5,7 @@ import { CashDetails } from '@ghostfolio/api/app/account/interfaces/cash-details import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { UserService } from '@ghostfolio/api/app/user/user.service'; -import { - getFactor, - getInterval -} from '@ghostfolio/api/helper/portfolio.helper'; +import { getFactor } from '@ghostfolio/api/helper/portfolio.helper'; import { AccountClusterRiskCurrentInvestment } from '@ghostfolio/api/models/rules/account-cluster-risk/current-investment'; import { AccountClusterRiskSingleAccount } from '@ghostfolio/api/models/rules/account-cluster-risk/single-account'; import { CurrencyClusterRiskBaseCurrencyCurrentInvestment } from '@ghostfolio/api/models/rules/currency-cluster-risk/base-currency-current-investment'; @@ -20,6 +17,10 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; import { IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; +import { + getAnnualizedPerformancePercent, + getIntervalFromDateRange +} from '@ghostfolio/common/calculation-helper'; import { DEFAULT_CURRENCY, EMERGENCY_FUND_TAG_ID, @@ -60,19 +61,21 @@ import { DataSource, Order, Platform, - Prisma + Prisma, + Tag } from '@prisma/client'; import { Big } from 'big.js'; import { differenceInDays, format, isAfter, + isBefore, isSameMonth, isSameYear, parseISO, set } from 'date-fns'; -import { isEmpty, isNumber, last, uniq, uniqBy } from 'lodash'; +import { isEmpty, last, uniq, uniqBy } from 'lodash'; import { CPRPortfolioCalculator } from './calculator/constantPortfolioReturn/portfolio-calculator'; import { PortfolioCalculator } from './calculator/portfolio-calculator'; @@ -211,25 +214,6 @@ export class PortfolioService { }; } - @LogPerformance - public getAnnualizedPerformancePercent({ - daysInMarket, - netPerformancePercentage - }: { - daysInMarket: number; - netPerformancePercentage: Big; - }): Big { - if (isNumber(daysInMarket) && daysInMarket > 0) { - const exponent = new Big(365).div(daysInMarket).toNumber(); - - return new Big( - Math.pow(netPerformancePercentage.plus(1).toNumber(), exponent) - ).minus(1); - } - - return new Big(0); - } - @LogPerformance public async getDividends({ activities, @@ -268,13 +252,14 @@ export class PortfolioService { }): Promise { const userId = await this.getUserId(impersonationId, this.request.user.id); - const { activities } = await this.orderService.getOrders({ - filters, - userId, - includeDrafts: true, - types: ['BUY', 'SELL'], - userCurrency: this.getUserCurrency() - }); + const { endDate, startDate } = getIntervalFromDateRange(dateRange); + + const { activities } = + await this.orderService.getOrdersForPortfolioCalculator({ + filters, + userId, + userCurrency: this.getUserCurrency() + }); if (activities.length === 0) { return { @@ -285,18 +270,16 @@ export class PortfolioService { const portfolioCalculator = this.calculatorFactory.createCalculator({ activities, - dateRange, + filters, userId, calculationType: PerformanceCalculationType.TWR, - currency: this.request.user.Settings.settings.baseCurrency, - hasFilters: filters?.length > 0, - isExperimentalFeatures: - this.request.user.Settings.settings.isExperimentalFeatures + currency: this.request.user.Settings.settings.baseCurrency }); - const items = await portfolioCalculator.getChart({ - dateRange, - withDataDecimation: false + const { historicalData } = await portfolioCalculator.getSnapshot(); + + const items = historicalData.filter(({ date }) => { + return !isBefore(date, startDate) && !isAfter(date, endDate); }); let investments: InvestmentItem[]; @@ -356,22 +339,19 @@ export class PortfolioService { (user.Settings?.settings as UserSettings)?.emergencyFund ?? 0 ); - const { activities } = await this.orderService.getOrders({ - filters, - userCurrency, - userId, - withExcludedAccounts - }); + const { activities } = + await this.orderService.getOrdersForPortfolioCalculator({ + filters, + userCurrency, + userId + }); const portfolioCalculator = this.calculatorFactory.createCalculator({ activities, - dateRange, + filters, userId, calculationType: PerformanceCalculationType.TWR, - currency: userCurrency, - hasFilters: true, // disable cache - isExperimentalFeatures: - this.request.user?.Settings.settings.isExperimentalFeatures + currency: userCurrency }); const { currentValueInBaseCurrency, hasErrors, positions } = @@ -425,10 +405,8 @@ export class PortfolioService { }; }); - const [dataProviderResponses, symbolProfiles] = await Promise.all([ - this.dataProviderService.getQuotes({ user, items: dataGatheringItems }), - this.symbolProfileService.getSymbolProfiles(dataGatheringItems) - ]); + const symbolProfiles = + await this.symbolProfileService.getSymbolProfiles(dataGatheringItems); const symbolProfileMap: { [symbol: string]: EnhancedSymbolProfile } = {}; for (const symbolProfile of symbolProfiles) { @@ -452,8 +430,8 @@ export class PortfolioService { marketPrice, netPerformance, netPerformancePercentage, - netPerformancePercentageWithCurrencyEffect, - netPerformanceWithCurrencyEffect, + netPerformancePercentageWithCurrencyEffectMap, + netPerformanceWithCurrencyEffectMap, quantity, symbol, tags, @@ -473,7 +451,6 @@ export class PortfolioService { } const assetProfile = symbolProfileMap[symbol]; - const dataProviderResponse = dataProviderResponses[symbol]; let markets: PortfolioPosition['markets']; let marketsAdvanced: PortfolioPosition['marketsAdvanced']; @@ -508,15 +485,27 @@ export class PortfolioService { grossPerformancePercentageWithCurrencyEffect?.toNumber() ?? 0, grossPerformanceWithCurrencyEffect: grossPerformanceWithCurrencyEffect?.toNumber() ?? 0, + holdings: assetProfile.holdings.map( + ({ allocationInPercentage, name }) => { + return { + allocationInPercentage, + name, + valueInBaseCurrency: valueInBaseCurrency + .mul(allocationInPercentage) + .toNumber() + }; + } + ), investment: investment.toNumber(), - marketState: dataProviderResponse?.marketState ?? 'delayed', name: assetProfile.name, netPerformance: netPerformance?.toNumber() ?? 0, netPerformancePercent: netPerformancePercentage?.toNumber() ?? 0, netPerformancePercentWithCurrencyEffect: - netPerformancePercentageWithCurrencyEffect?.toNumber() ?? 0, + netPerformancePercentageWithCurrencyEffectMap?.[ + dateRange + ]?.toNumber() ?? 0, netPerformanceWithCurrencyEffect: - netPerformanceWithCurrencyEffect?.toNumber() ?? 0, + netPerformanceWithCurrencyEffectMap?.[dateRange]?.toNumber() ?? 0, quantity: quantity.toNumber(), sectors: assetProfile.sectors, url: assetProfile.url, @@ -585,7 +574,6 @@ export class PortfolioService { if (withSummary) { summary = await this.getSummary({ filteredValueInBaseCurrency, - holdings, impersonationId, portfolioCalculator, userCurrency, @@ -690,11 +678,11 @@ export class PortfolioService { const user = await this.userService.user({ id: userId }); const userCurrency = this.getUserCurrency(user); - const { activities } = await this.orderService.getOrders({ - userCurrency, - userId, - withExcludedAccounts: true - }); + const { activities } = + await this.orderService.getOrdersForPortfolioCalculator({ + userCurrency, + userId + }); const orders = activities.filter(({ SymbolProfile }) => { return ( @@ -748,10 +736,7 @@ export class PortfolioService { ); }), calculationType: PerformanceCalculationType.TWR, - currency: userCurrency, - hasFilters: true, - isExperimentalFeatures: - this.request.user.Settings.settings.isExperimentalFeatures + currency: userCurrency }); const portfolioStart = portfolioCalculator.getStartDate(); @@ -788,7 +773,7 @@ export class PortfolioService { return Account; }); - const dividendYieldPercent = this.getAnnualizedPerformancePercent({ + const dividendYieldPercent = getAnnualizedPerformancePercent({ daysInMarket: differenceInDays(new Date(), parseDate(firstBuyDate)), netPerformancePercentage: timeWeightedInvestment.eq(0) ? new Big(0) @@ -796,7 +781,7 @@ export class PortfolioService { }); const dividendYieldPercentWithCurrencyEffect = - this.getAnnualizedPerformancePercent({ + getAnnualizedPerformancePercent({ daysInMarket: differenceInDays(new Date(), parseDate(firstBuyDate)), netPerformancePercentage: timeWeightedInvestmentWithCurrencyEffect.eq( 0 @@ -928,9 +913,11 @@ export class PortfolioService { netPerformance: position.netPerformance?.toNumber(), netPerformancePercent: position.netPerformancePercentage?.toNumber(), netPerformancePercentWithCurrencyEffect: - position.netPerformancePercentageWithCurrencyEffect?.toNumber(), + position.netPerformancePercentageWithCurrencyEffectMap?.[ + 'max' + ]?.toNumber(), netPerformanceWithCurrencyEffect: - position.netPerformanceWithCurrencyEffect?.toNumber(), + position.netPerformanceWithCurrencyEffectMap?.['max']?.toNumber(), quantity: quantity.toNumber(), value: this.exchangeRateDataService.toCurrency( quantity.mul(marketPrice ?? 0).toNumber(), @@ -1033,14 +1020,12 @@ export class PortfolioService { const userId = await this.getUserId(impersonationId, this.request.user.id); const user = await this.userService.user({ id: userId }); - const { endDate } = getInterval(dateRange); - - const { activities } = await this.orderService.getOrders({ - endDate, - filters, - userId, - userCurrency: this.getUserCurrency() - }); + const { activities } = + await this.orderService.getOrdersForPortfolioCalculator({ + filters, + userId, + userCurrency: this.getUserCurrency() + }); if (activities?.length <= 0) { return { @@ -1051,13 +1036,10 @@ export class PortfolioService { const portfolioCalculator = this.calculatorFactory.createCalculator({ activities, - dateRange, + filters, userId, calculationType: PerformanceCalculationType.TWR, - currency: this.request.user.Settings.settings.baseCurrency, - hasFilters: filters?.length > 0, - isExperimentalFeatures: - this.request.user.Settings.settings.isExperimentalFeatures + currency: this.request.user.Settings.settings.baseCurrency }); let { hasErrors, positions } = await portfolioCalculator.getSnapshot(); @@ -1116,8 +1098,8 @@ export class PortfolioService { investmentWithCurrencyEffect, netPerformance, netPerformancePercentage, - netPerformancePercentageWithCurrencyEffect, - netPerformanceWithCurrencyEffect, + netPerformancePercentageWithCurrencyEffectMap, + netPerformanceWithCurrencyEffectMap, quantity, symbol, timeWeightedInvestment, @@ -1151,9 +1133,12 @@ export class PortfolioService { netPerformancePercentage: netPerformancePercentage?.toNumber() ?? null, netPerformancePercentageWithCurrencyEffect: - netPerformancePercentageWithCurrencyEffect?.toNumber() ?? null, + netPerformancePercentageWithCurrencyEffectMap?.[ + dateRange + ]?.toNumber() ?? null, netPerformanceWithCurrencyEffect: - netPerformanceWithCurrencyEffect?.toNumber() ?? null, + netPerformanceWithCurrencyEffectMap?.[dateRange]?.toNumber() ?? + null, quantity: quantity.toNumber(), timeWeightedInvestment: timeWeightedInvestment?.toNumber(), timeWeightedInvestmentWithCurrencyEffect: @@ -1169,6 +1154,7 @@ export class PortfolioService { dateRange = 'max', filters, impersonationId, + portfolioCalculator, userId, withExcludedAccounts = false, calculateTimeWeightedPerformance = false @@ -1176,6 +1162,7 @@ export class PortfolioService { dateRange?: DateRange; filters?: Filter[]; impersonationId: string; + portfolioCalculator?: PortfolioCalculator; userId: string; withExcludedAccounts?: boolean; calculateTimeWeightedPerformance?: boolean; @@ -1214,15 +1201,12 @@ export class PortfolioService { ) ); - const { endDate } = getInterval(dateRange); - - const { activities } = await this.orderService.getOrders({ - endDate, - filters, - userCurrency, - userId, - withExcludedAccounts - }); + const { activities } = + await this.orderService.getOrdersForPortfolioCalculator({ + filters, + userCurrency, + userId + }); if (accountBalanceItems?.length <= 0 && activities?.length <= 0) { return { @@ -1232,10 +1216,6 @@ export class PortfolioService { performance: { currentNetWorth: 0, currentValueInBaseCurrency: 0, - grossPerformance: 0, - grossPerformancePercentage: 0, - grossPerformancePercentageWithCurrencyEffect: 0, - grossPerformanceWithCurrencyEffect: 0, netPerformance: 0, netPerformancePercentage: 0, netPerformancePercentageWithCurrencyEffect: 0, @@ -1245,93 +1225,47 @@ export class PortfolioService { }; } - const portfolioCalculator = this.calculatorFactory.createCalculator({ - accountBalanceItems, - activities, - dateRange, - userId, - calculationType: PerformanceCalculationType.TWR, - currency: userCurrency, - hasFilters: filters?.length > 0, - isExperimentalFeatures: - this.request.user.Settings.settings.isExperimentalFeatures + const { endDate, startDate } = getIntervalFromDateRange(dateRange); + + const { chart } = await portfolioCalculator.getPerformance({ + end: endDate, + start: startDate }); const { - currentValueInBaseCurrency, - errors, - grossPerformance, - grossPerformancePercentage, - grossPerformancePercentageWithCurrencyEffect, - grossPerformanceWithCurrencyEffect, - hasErrors, netPerformance, - netPerformancePercentage, - netPerformancePercentageWithCurrencyEffect, + netPerformanceInPercentage, + netPerformanceInPercentageWithCurrencyEffect, netPerformanceWithCurrencyEffect, - totalInvestment - } = await portfolioCalculator.getSnapshot(); - - let currentNetPerformance = netPerformance; - - let currentNetPerformancePercentage = netPerformancePercentage; - - let currentNetPerformancePercentageWithCurrencyEffect = - netPerformancePercentageWithCurrencyEffect; - - let currentNetPerformanceWithCurrencyEffect = - netPerformanceWithCurrencyEffect; - - let currentNetWorth = 0; - - let items = await portfolioCalculator.getChart({ - dateRange, - withTimeWeightedReturn: calculateTimeWeightedPerformance - }); - - const itemOfToday = items.find(({ date }) => { - return date === format(new Date(), DATE_FORMAT); - }); - - if (itemOfToday) { - currentNetPerformance = new Big(itemOfToday.netPerformance); - - currentNetPerformancePercentage = new Big( - itemOfToday.netPerformanceInPercentage - ).div(100); - - currentNetPerformancePercentageWithCurrencyEffect = new Big( - itemOfToday.netPerformanceInPercentageWithCurrencyEffect - ).div(100); - - currentNetPerformanceWithCurrencyEffect = new Big( - itemOfToday.netPerformanceWithCurrencyEffect - ); - - currentNetWorth = itemOfToday.netWorth; - } + netWorth, + totalInvestment, + valueWithCurrencyEffect + } = + chart?.length > 0 + ? last(chart) + : { + netPerformance: 0, + netPerformanceInPercentage: 0, + netPerformanceInPercentageWithCurrencyEffect: 0, + netPerformanceWithCurrencyEffect: 0, + netWorth: 0, + totalInvestment: 0, + valueWithCurrencyEffect: 0 + }; return { - errors, - hasErrors, - chart: items, - firstOrderDate: parseDate(items[0]?.date), + chart, + hasErrors: false, + firstOrderDate: parseDate(chart[0]?.date), performance: { - currentNetWorth, - currentValueInBaseCurrency: currentValueInBaseCurrency.toNumber(), - grossPerformance: grossPerformance.toNumber(), - grossPerformancePercentage: grossPerformancePercentage.toNumber(), - grossPerformancePercentageWithCurrencyEffect: - grossPerformancePercentageWithCurrencyEffect.toNumber(), - grossPerformanceWithCurrencyEffect: - grossPerformanceWithCurrencyEffect.toNumber(), - netPerformance: currentNetPerformance.toNumber(), - netPerformancePercentage: currentNetPerformancePercentage.toNumber(), + netPerformance, + netPerformanceWithCurrencyEffect, + totalInvestment, + currentNetWorth: netWorth, + currentValueInBaseCurrency: valueWithCurrencyEffect, + netPerformancePercentage: netPerformanceInPercentage, netPerformancePercentageWithCurrencyEffect: - currentNetPerformancePercentageWithCurrencyEffect.toNumber(), - netPerformanceWithCurrencyEffect: - currentNetPerformanceWithCurrencyEffect.toNumber(), - totalInvestment: totalInvestment.toNumber() + netPerformanceInPercentageWithCurrencyEffect } }; } @@ -1342,19 +1276,17 @@ export class PortfolioService { const user = await this.userService.user({ id: userId }); const userCurrency = this.getUserCurrency(user); - const { activities } = await this.orderService.getOrders({ - userCurrency, - userId - }); + const { activities } = + await this.orderService.getOrdersForPortfolioCalculator({ + userCurrency, + userId + }); const portfolioCalculator = this.calculatorFactory.createCalculator({ activities, userId, calculationType: PerformanceCalculationType.TWR, - currency: this.request.user.Settings.settings.baseCurrency, - hasFilters: false, - isExperimentalFeatures: - this.request.user.Settings.settings.isExperimentalFeatures + currency: this.request.user.Settings.settings.baseCurrency }); let { totalFeesWithCurrencyEffect, positions, totalInvestment } = @@ -1432,6 +1364,25 @@ export class PortfolioService { }; } + @LogPerformance + public async updateTags({ + dataSource, + impersonationId, + symbol, + tags, + userId + }: { + dataSource: DataSource; + impersonationId: string; + symbol: string; + tags: Tag[]; + userId: string; + }) { + userId = await this.getUserId(impersonationId, userId); + + await this.orderService.assignTags({ dataSource, symbol, tags, userId }); + } + @LogPerformance private async getCashPositions({ cashDetails, @@ -1589,9 +1540,9 @@ export class PortfolioService { grossPerformancePercent: 0, grossPerformancePercentWithCurrencyEffect: 0, grossPerformanceWithCurrencyEffect: 0, + holdings: [], investment: balance, marketPrice: 0, - marketState: 'open', name: currency, netPerformance: 0, netPerformancePercent: 0, @@ -1714,7 +1665,6 @@ export class PortfolioService { balanceInBaseCurrency, emergencyFundPositionsValueInBaseCurrency, filteredValueInBaseCurrency, - holdings, impersonationId, portfolioCalculator, userCurrency, @@ -1723,7 +1673,6 @@ export class PortfolioService { balanceInBaseCurrency: number; emergencyFundPositionsValueInBaseCurrency: number; filteredValueInBaseCurrency: Big; - holdings: PortfolioDetails['holdings']; impersonationId: string; portfolioCalculator: PortfolioCalculator; userCurrency: string; @@ -1748,18 +1697,20 @@ export class PortfolioService { } } + const { currentValueInBaseCurrency, totalInvestment } = + await portfolioCalculator.getSnapshot(); + + const { performance } = await this.getPerformance({ + impersonationId, + userId + }); + const { - currentValueInBaseCurrency, - grossPerformance, - grossPerformancePercentage, - grossPerformancePercentageWithCurrencyEffect, - grossPerformanceWithCurrencyEffect, netPerformance, netPerformancePercentage, netPerformancePercentageWithCurrencyEffect, - netPerformanceWithCurrencyEffect, - totalInvestment - } = await portfolioCalculator.getSnapshot(); + netPerformanceWithCurrencyEffect + } = performance; const dividendInBaseCurrency = await portfolioCalculator.getDividendInBaseCurrency(); @@ -1841,13 +1792,13 @@ export class PortfolioService { const daysInMarket = differenceInDays(new Date(), firstOrderDate); - const annualizedPerformancePercent = this.getAnnualizedPerformancePercent({ + const annualizedPerformancePercent = getAnnualizedPerformancePercent({ daysInMarket, netPerformancePercentage: new Big(netPerformancePercentage) })?.toNumber(); const annualizedPerformancePercentWithCurrencyEffect = - this.getAnnualizedPerformancePercent({ + getAnnualizedPerformancePercent({ daysInMarket, netPerformancePercentage: new Big( netPerformancePercentageWithCurrencyEffect @@ -1860,6 +1811,10 @@ export class PortfolioService { cash, excludedAccountsAndActivities, firstOrderDate, + netPerformance, + netPerformancePercentage, + netPerformancePercentageWithCurrencyEffect, + netPerformanceWithCurrencyEffect, totalBuy, totalSell, committedFunds: committedFunds.toNumber(), @@ -1880,21 +1835,15 @@ export class PortfolioService { fireWealth: new Big(currentValueInBaseCurrency) .minus(emergencyFundPositionsValueInBaseCurrency) .toNumber(), - grossPerformance: grossPerformance.toNumber(), - grossPerformancePercentage: grossPerformancePercentage.toNumber(), - grossPerformancePercentageWithCurrencyEffect: - grossPerformancePercentageWithCurrencyEffect.toNumber(), - grossPerformanceWithCurrencyEffect: - grossPerformanceWithCurrencyEffect.toNumber(), + grossPerformance: new Big(netPerformance).plus(fees).toNumber(), + grossPerformanceWithCurrencyEffect: new Big( + netPerformanceWithCurrencyEffect + ) + .plus(fees) + .toNumber(), interest: interest.toNumber(), items: valuables.toNumber(), liabilities: liabilities.toNumber(), - netPerformance: netPerformance.toNumber(), - netPerformancePercentage: netPerformancePercentage.toNumber(), - netPerformancePercentageWithCurrencyEffect: - netPerformancePercentageWithCurrencyEffect.toNumber(), - netPerformanceWithCurrencyEffect: - netPerformanceWithCurrencyEffect.toNumber(), ordersCount: activities.filter(({ type }) => { return ['BUY', 'SELL'].includes(type); }).length, diff --git a/apps/api/src/app/portfolio/rules.service.ts b/apps/api/src/app/portfolio/rules.service.ts index 85f7ed55b..6b6526144 100644 --- a/apps/api/src/app/portfolio/rules.service.ts +++ b/apps/api/src/app/portfolio/rules.service.ts @@ -12,11 +12,8 @@ export class RulesService { aRules: Rule[], aUserSettings: UserSettings ) { - return aRules - .filter((rule) => { - return rule.getSettings(aUserSettings)?.isActive; - }) - .map((rule) => { + return aRules.map((rule) => { + if (rule.getSettings(aUserSettings)?.isActive) { const { evaluation, value } = rule.evaluate( rule.getSettings(aUserSettings) ); @@ -24,9 +21,17 @@ export class RulesService { return { evaluation, value, + isActive: true, key: rule.getKey(), name: rule.getName() }; - }); + } else { + return { + isActive: false, + key: rule.getKey(), + name: rule.getName() + }; + } + }); } } diff --git a/apps/api/src/app/portfolio/update-holding-tags.dto.ts b/apps/api/src/app/portfolio/update-holding-tags.dto.ts new file mode 100644 index 000000000..11efe189d --- /dev/null +++ b/apps/api/src/app/portfolio/update-holding-tags.dto.ts @@ -0,0 +1,7 @@ +import { Tag } from '@prisma/client'; +import { IsArray } from 'class-validator'; + +export class UpdateHoldingTagsDto { + @IsArray() + tags: Tag[]; +} diff --git a/apps/api/src/app/redis-cache/redis-cache.service.ts b/apps/api/src/app/redis-cache/redis-cache.service.ts index 53b177b4f..341dc4acf 100644 --- a/apps/api/src/app/redis-cache/redis-cache.service.ts +++ b/apps/api/src/app/redis-cache/redis-cache.service.ts @@ -1,9 +1,10 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier, Filter } from '@ghostfolio/common/interfaces'; import { CACHE_MANAGER } from '@nestjs/cache-manager'; import { Inject, Injectable, Logger } from '@nestjs/common'; +import { createHash } from 'crypto'; import type { RedisCache } from './interfaces/redis-cache.interface'; @@ -24,11 +25,37 @@ export class RedisCacheService { return this.cache.get(key); } - public getPortfolioSnapshotKey({ userId }: { userId: string }) { - return `portfolio-snapshot-${userId}`; + public async getKeys(aPrefix?: string): Promise { + let prefix = aPrefix; + + if (prefix) { + prefix = `${prefix}*`; + } + + return this.cache.store.keys(prefix); } - public getQuoteKey({ dataSource, symbol }: UniqueAsset) { + public getPortfolioSnapshotKey({ + filters, + userId + }: { + filters?: Filter[]; + userId: string; + }) { + let portfolioSnapshotKey = `portfolio-snapshot-${userId}`; + + if (filters?.length > 0) { + const filtersHash = createHash('sha256') + .update(JSON.stringify(filters)) + .digest('hex'); + + portfolioSnapshotKey = `${portfolioSnapshotKey}-${filtersHash}`; + } + + return portfolioSnapshotKey; + } + + public getQuoteKey({ dataSource, symbol }: AssetProfileIdentifier) { return `quote-${getAssetProfileIdentifier({ dataSource, symbol })}`; } @@ -36,6 +63,20 @@ export class RedisCacheService { return this.cache.del(key); } + public async removePortfolioSnapshotsByUserId({ + userId + }: { + userId: string; + }) { + const keys = await this.getKeys( + `${this.getPortfolioSnapshotKey({ userId })}` + ); + + for (const key of keys) { + await this.remove(key); + } + } + public async reset() { return this.cache.reset(); } diff --git a/apps/api/src/app/sitemap/sitemap.controller.ts b/apps/api/src/app/sitemap/sitemap.controller.ts index 7975573d1..ea21906ef 100644 --- a/apps/api/src/app/sitemap/sitemap.controller.ts +++ b/apps/api/src/app/sitemap/sitemap.controller.ts @@ -1,8 +1,10 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DATE_FORMAT, getYesterday, interpolate } from '@ghostfolio/common/helper'; +import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { Controller, Get, Res, VERSION_NEUTRAL, Version } from '@nestjs/common'; import { format } from 'date-fns'; @@ -14,7 +16,9 @@ import * as path from 'path'; export class SitemapController { public sitemapXml = ''; - public constructor() { + public constructor( + private readonly configurationService: ConfigurationService + ) { try { this.sitemapXml = fs.readFileSync( path.join(__dirname, 'assets', 'sitemap.xml'), @@ -25,11 +29,51 @@ export class SitemapController { @Get() @Version(VERSION_NEUTRAL) - public async flushCache(@Res() response: Response): Promise { + public async getSitemapXml(@Res() response: Response): Promise { + const currentDate = format(getYesterday(), DATE_FORMAT); + response.setHeader('content-type', 'application/xml'); response.send( interpolate(this.sitemapXml, { - currentDate: format(getYesterday(), DATE_FORMAT) + currentDate, + personalFinanceTools: this.configurationService.get( + 'ENABLE_FEATURE_SUBSCRIPTION' + ) + ? personalFinanceTools + .map(({ alias, key }) => { + return [ + '', + ` https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-${alias ?? key}`, + ` ${currentDate}T00:00:00+00:00`, + '', + '', + ` https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-${alias ?? key}`, + ` ${currentDate}T00:00:00+00:00`, + '', + '', + ` https://ghostfol.io/es/recursos/personal-finance-tools/alternativa-de-software-libre-a-${alias ?? key}`, + ` ${currentDate}T00:00:00+00:00`, + '', + '', + ` https://ghostfol.io/fr/ressources/personal-finance-tools/alternative-open-source-a-${alias ?? key}`, + ` ${currentDate}T00:00:00+00:00`, + '', + '', + ` https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-${alias ?? key}`, + ` ${currentDate}T00:00:00+00:00`, + '', + '', + ` https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-${alias ?? key}`, + ` ${currentDate}T00:00:00+00:00`, + '', + '', + ` https://ghostfol.io/pt/recursos/personal-finance-tools/alternativa-de-software-livre-ao-${alias ?? key}`, + ` ${currentDate}T00:00:00+00:00`, + '' + ].join('\n'); + }) + .join('\n') + : '' }) ); } diff --git a/apps/api/src/app/sitemap/sitemap.module.ts b/apps/api/src/app/sitemap/sitemap.module.ts index e04e3f6b3..d1059d408 100644 --- a/apps/api/src/app/sitemap/sitemap.module.ts +++ b/apps/api/src/app/sitemap/sitemap.module.ts @@ -1,8 +1,11 @@ +import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; + import { Module } from '@nestjs/common'; import { SitemapController } from './sitemap.controller'; @Module({ - controllers: [SitemapController] + controllers: [SitemapController], + imports: [ConfigurationModule] }) export class SitemapModule {} diff --git a/apps/api/src/app/subscription/subscription.service.ts b/apps/api/src/app/subscription/subscription.service.ts index d53944787..545450669 100644 --- a/apps/api/src/app/subscription/subscription.service.ts +++ b/apps/api/src/app/subscription/subscription.service.ts @@ -22,7 +22,7 @@ export class SubscriptionService { this.stripe = new Stripe( this.configurationService.get('STRIPE_SECRET_KEY'), { - apiVersion: '2022-11-15' + apiVersion: '2024-04-10' } ); } diff --git a/apps/api/src/app/symbol/interfaces/symbol-item.interface.ts b/apps/api/src/app/symbol/interfaces/symbol-item.interface.ts index 358658672..710a84144 100644 --- a/apps/api/src/app/symbol/interfaces/symbol-item.interface.ts +++ b/apps/api/src/app/symbol/interfaces/symbol-item.interface.ts @@ -1,6 +1,9 @@ -import { HistoricalDataItem, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + HistoricalDataItem +} from '@ghostfolio/common/interfaces'; -export interface SymbolItem extends UniqueAsset { +export interface SymbolItem extends AssetProfileIdentifier { currency: string; historicalData: HistoricalDataItem[]; marketPrice: number; diff --git a/apps/api/src/app/symbol/symbol.service.ts b/apps/api/src/app/symbol/symbol.service.ts index 90259a776..2baca18dd 100644 --- a/apps/api/src/app/symbol/symbol.service.ts +++ b/apps/api/src/app/symbol/symbol.service.ts @@ -40,13 +40,13 @@ export class SymbolService { const days = includeHistoricalData; const marketData = await this.marketDataService.getRange({ - dateQuery: { gte: subDays(new Date(), days) }, - uniqueAssets: [ + assetProfileIdentifiers: [ { dataSource: dataGatheringItem.dataSource, symbol: dataGatheringItem.symbol } - ] + ], + dateQuery: { gte: subDays(new Date(), days) } }); historicalData = marketData.map(({ date, marketPrice: value }) => { diff --git a/apps/api/src/app/user/update-user-setting.dto.ts b/apps/api/src/app/user/update-user-setting.dto.ts index 665f7822d..d73fa47eb 100644 --- a/apps/api/src/app/user/update-user-setting.dto.ts +++ b/apps/api/src/app/user/update-user-setting.dto.ts @@ -1,13 +1,15 @@ +import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code'; import type { ColorScheme, DateRange, - ViewMode + HoldingsViewMode, + ViewMode, + XRayRulesSettings } from '@ghostfolio/common/types'; import { IsArray, IsBoolean, - IsISO4217CurrencyCode, IsISO8601, IsIn, IsNumber, @@ -21,7 +23,7 @@ export class UpdateUserSettingDto { @IsOptional() annualInterestRate?: number; - @IsISO4217CurrencyCode() + @IsCurrencyCode() @IsOptional() baseCurrency?: string; @@ -69,6 +71,10 @@ export class UpdateUserSettingDto { @IsOptional() 'filters.tags'?: string[]; + @IsIn(['CHART', 'TABLE']) + @IsOptional() + holdingsViewMode?: HoldingsViewMode; + @IsBoolean() @IsOptional() isExperimentalFeatures?: boolean; @@ -100,4 +106,7 @@ export class UpdateUserSettingDto { @IsIn(['DEFAULT', 'ZEN']) @IsOptional() viewMode?: ViewMode; + + @IsOptional() + xRayRules?: XRayRulesSettings; } diff --git a/apps/api/src/app/user/user.controller.ts b/apps/api/src/app/user/user.controller.ts index 7cd2002bd..c23870437 100644 --- a/apps/api/src/app/user/user.controller.ts +++ b/apps/api/src/app/user/user.controller.ts @@ -24,7 +24,7 @@ import { JwtService } from '@nestjs/jwt'; import { AuthGuard } from '@nestjs/passport'; import { User as UserModel } from '@prisma/client'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; -import { size } from 'lodash'; +import { merge, size } from 'lodash'; import { DeleteOwnUserDto } from './delete-own-user.dto'; import { UserItem } from './interfaces/user-item.interface'; @@ -144,10 +144,13 @@ export class UserController { ); } - const userSettings: UserSettings = { - ...(this.request.user.Settings.settings), - ...data - }; + const emitPortfolioChangedEvent = 'baseCurrency' in data; + + const userSettings: UserSettings = merge( + {}, + this.request.user.Settings.settings, + data + ); for (const key in userSettings) { if (userSettings[key] === false || userSettings[key] === null) { @@ -156,6 +159,7 @@ export class UserController { } return this.userService.updateUserSetting({ + emitPortfolioChangedEvent, userSettings, userId: this.request.user.id }); diff --git a/apps/api/src/app/user/user.module.ts b/apps/api/src/app/user/user.module.ts index 35f78dc5f..063cfef82 100644 --- a/apps/api/src/app/user/user.module.ts +++ b/apps/api/src/app/user/user.module.ts @@ -1,3 +1,4 @@ +import { OrderModule } from '@ghostfolio/api/app/order/order.module'; import { SubscriptionModule } from '@ghostfolio/api/app/subscription/subscription.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; @@ -19,6 +20,7 @@ import { UserService } from './user.service'; secret: process.env.JWT_SECRET_KEY, signOptions: { expiresIn: '30 days' } }), + OrderModule, PrismaModule, PropertyModule, SubscriptionModule, diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 51bd4c4db..f8746881f 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -1,3 +1,4 @@ +import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { SubscriptionService } from '@ghostfolio/api/app/subscription/subscription.service'; import { environment } from '@ghostfolio/api/environments/environment'; import { PortfolioChangedEvent } from '@ghostfolio/api/events/portfolio-changed.event'; @@ -40,6 +41,7 @@ export class UserService { public constructor( private readonly configurationService: ConfigurationService, private readonly eventEmitter: EventEmitter2, + private readonly orderService: OrderService, private readonly prismaService: PrismaService, private readonly propertyService: PropertyService, private readonly subscriptionService: SubscriptionService, @@ -188,13 +190,25 @@ export class UserService { (user.Settings.settings as UserSettings).dateRange = (user.Settings.settings as UserSettings).viewMode === 'ZEN' ? 'max' - : (user.Settings.settings as UserSettings)?.dateRange ?? 'max'; + : ((user.Settings.settings as UserSettings)?.dateRange ?? 'max'); // Set default value for view mode if (!(user.Settings.settings as UserSettings).viewMode) { (user.Settings.settings as UserSettings).viewMode = 'DEFAULT'; } + // Set default values for X-ray rules + if (!(user.Settings.settings as UserSettings).xRayRules) { + (user.Settings.settings as UserSettings).xRayRules = { + AccountClusterRiskCurrentInvestment: { isActive: true }, + AccountClusterRiskSingleAccount: { isActive: true }, + CurrencyClusterRiskBaseCurrencyCurrentInvestment: { isActive: true }, + CurrencyClusterRiskCurrentInvestment: { isActive: true }, + EmergencyFundSetup: { isActive: true }, + FeeRatioInitialInvestment: { isActive: true } + }; + } + let currentPermissions = getPermissions(user.role); if (!(user.Settings.settings as UserSettings).isExperimentalFeatures) { @@ -235,11 +249,15 @@ export class UserService { currentPermissions = without( currentPermissions, + permissions.accessHoldingsChart, permissions.createAccess ); // Reset benchmark user.Settings.settings.benchmark = undefined; + + // Reset holdings view mode + user.Settings.settings.holdingsViewMode = undefined; } else if (user.subscription?.type === 'Premium') { currentPermissions.push(permissions.reportDataGlitch); @@ -398,8 +416,8 @@ export class UserService { } catch {} try { - await this.prismaService.order.deleteMany({ - where: { userId: where.id } + await this.orderService.deleteOrders({ + userId: where.id }); } catch {} @@ -415,9 +433,11 @@ export class UserService { } public async updateUserSetting({ + emitPortfolioChangedEvent, userId, userSettings }: { + emitPortfolioChangedEvent: boolean; userId: string; userSettings: UserSettings; }) { @@ -438,12 +458,14 @@ export class UserService { } }); - this.eventEmitter.emit( - PortfolioChangedEvent.getName(), - new PortfolioChangedEvent({ - userId - }) - ); + if (emitPortfolioChangedEvent) { + this.eventEmitter.emit( + PortfolioChangedEvent.getName(), + new PortfolioChangedEvent({ + userId + }) + ); + } return settings; } diff --git a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json index 972587899..c63ba5c73 100644 --- a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json +++ b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json @@ -23,6 +23,7 @@ "00": "ZER0ZER0", "007": "007 coin", "0KN": "0 Knowledge Network", + "0NE": "Stone", "0X1": "0x1.tools: AI Multi-tool Plaform", "0XBTC": "0xBitcoin", "0XDEV": "DEVAI", @@ -31,8 +32,10 @@ "0XL": "0x Leverage", "0XOS": "0xOS AI", "0XSEARCH": "Search", + "0XVOX": "HashVox AI", "0x0": "0x0.ai", "0xDIARY": "The 0xDiary Token", + "0xVPN": "0xVPN.org", "1-UP": "1-UP", "1000SATS": "SATS", "10SET": "Tenset", @@ -47,6 +50,7 @@ "1INCH": "1inch", "1IRST": "1irstcoin", "1MCT": "MicroCreditToken", + "1MDC": "1MDC", "1MIL": "1MillionNFTs", "1MT": "1Move", "1NFT": "1NFT", @@ -73,7 +77,9 @@ "2SHARES": "2SHARE", "2TF": "2TF", "300F": "300FIT", + "314DAO": "Tonken 314 DAO", "32BIT": "32Bitcoin", + "360NS": "360 NOSCOPE INSTASWAP WALLBANG", "37C": "37Protocol", "3AIR": "3air", "3CEO": "FLOKI SHIBA PEPE CEO", @@ -95,6 +101,8 @@ "4MW": "For Meta World", "4RZ": "4REALZA COIN", "4TOKEN": "Ignore Fud", + "4WMM": "4-Way Mirror Money", + "50C": "50Cent", "50X": "50x.com", "5IRE": "5ire", "77G": "GraphenTech", @@ -106,6 +114,7 @@ "8X8": "8X8 Protocol", "9DOGS": "NINE DOGS", "9GAG": "9GAG", + "9MM": "Shigure UI", "A": "Alpha Token", "A2A": "A2A", "A4": "A4 Finance", @@ -130,13 +139,17 @@ "ABC": "ABC Chain", "ABCC": "ABCC Token", "ABCD": "Crypto Inu", + "ABD": "AB DEFI", "ABEL": "Abelian", + "ABET": "Altbet", "ABEY": "Abey", "ABIC": "Arabic", "ABJ": "Abjcoin", "ABL": "Airbloc", + "ABN": "Antofy", "ABO": "Albino", "ABOND": "ApeBond", + "ABONDV1": "ApeSwap", "ABR": "Allbridge", "ABT": "ArcBlock", "ABX": "Arbidex", @@ -159,6 +172,7 @@ "ACETH": "Acether", "ACH": "Alchemy Pay", "ACHC": "AchieveCoin", + "ACHI": "achi", "ACID": "AcidCoin", "ACK": "Arcade Kingdoms", "ACM": "AC Milan Fan Token", @@ -183,6 +197,7 @@ "ADAB": "Adab Solutions", "ADACASH": "ADACash", "ADAI": "Aave DAI", + "ADANA": "Adanaspor Fan Token", "ADAO": "ADADao", "ADAPAD": "ADAPad", "ADAT": "Adadex Tools", @@ -229,7 +244,9 @@ "AERGO": "AERGO", "AERM": "Aerium", "AERO": "Aerodrome Finance", + "AEROBUD": "Aerobud", "AEROCOIN": "Aero Coin", + "AEROT": "AEROTYME", "AES": "Artis Aes Evolution", "AET": "AfterEther", "AETH": "Aave ETH", @@ -250,6 +267,7 @@ "AFNTY": "Affinity", "AFO": "AllForOneBusiness", "AFP": "Animal Farm Pigs", + "AFR": "Afreum", "AFRO": "Afrostar", "AFROX": "AfroDex", "AFTT": "Africa Trading Chain", @@ -287,14 +305,18 @@ "AHOO": "Ahoolee", "AHT": "AhaToken", "AI": "Sleepless", + "AIA": "AIA Chain", "AIAI": "All In AI", "AIAKITA": "AiAkita", "AIAT": "AI Analysis Token", "AIB": "AdvancedInternetBlock", "AIBABYDOGE": "AIBabyDoge", "AIBB": "AiBB", + "AIBCOIN": "AIBLOCK", "AIBK": "AIB Utility Token", + "AIBU": "AIBUZZ TOKEN", "AIC": "AI Crypto", + "AICH": "AIChain", "AICO": "AICON", "AICODE": "AI CODE", "AICORE": "AICORE", @@ -309,9 +331,12 @@ "AIDUS": "AIDUS Token", "AIE": "A.I.Earn", "AIEN": "AIENGLISH", + "AIF": "AI FREEDOM TOKEN", "AIFLOKI": "AI Floki", "AIG": "A.I Genesis", + "AIGPU": "AIGPU Token", "AII": "Artificial Idiot", + "AIINU": "AI INU", "AIKEK": "AlphaKEK.AI", "AILINK": "AiLink Token", "AIM": "ModiHost", @@ -335,14 +360,17 @@ "AIPIN": "AI PIN", "AIR": "Altair", "AIRB": "BillionAir", + "AIRBTC": "AIRBTC", "AIRE": "Tokenaire", "AIRI": "aiRight", "AIRT": "Aircraft", + "AIRTNT": "Tenti", "AIRTOKEN": "AirToken", "AIRX": "Aircoins", "AIS": "AISwap", + "AISCII": "AISCII", "AISHIB": "ARBSHIB", - "AIT": "AIChain Token", + "AIT": "AIT Protocol", "AITECH": "Artificial Intelligence Utility Token", "AITEK": "AI Technology", "AITHEON": "Aitheon", @@ -369,6 +397,7 @@ "ALA": "ALA", "ALAN": "Alan the Alien", "ALB": "Alien Base", + "ALBART": "Albärt", "ALBEDO": "ALBEDO", "ALBT": "AllianceBlock", "ALC": "Arab League Coin", @@ -379,6 +408,7 @@ "ALCX": "Alchemix", "ALD": "AladdinDAO", "ALDIN": "Alaaddin.ai", + "ALE": "Ailey", "ALEPH": "Aleph.im", "ALEX": "ALEX Lab", "ALEXANDRITE": "Alexandrite", @@ -387,6 +417,7 @@ "ALGB": "Algebra", "ALGO": "Algorand", "ALGOBLK": "AlgoBlocks", + "ALGOW": "Algowave", "ALH": "AlloHash", "ALI": "Alethea Artificial Liquid Intelligence Token", "ALIAS": "Alias", @@ -404,6 +435,7 @@ "ALLEY": "NFT Alley", "ALLIN": "All in", "ALM": "Alium Finance", + "ALMC": "Awkward Look Monkey Club", "ALME": "Alita", "ALN": "Aluna", "ALOHA": "Aloha", @@ -413,8 +445,10 @@ "ALPACA": "Alpaca Finance", "ALPH": "Alephium", "ALPHA": "Alpha Finance Lab", + "ALPHAAI": "Alpha AI", "ALPHABET": "Alphabet", "ALPHAC": "Alpha Coin", + "ALPHAS": "Alpha Shards", "ALPHR": "Alphr", "ALPINE": "Alpine F1 Team Fan Token", "ALPS": "Alpenschillling", @@ -426,6 +460,7 @@ "ALTD": "Altitude", "ALTMAN": "SAM", "ALTOCAR": "AltoCar", + "ALTR": "Altranium", "ALU": "Altura", "ALUSD": "Alchemix USD", "ALUX": "Alux Bank", @@ -436,6 +471,7 @@ "ALY": "Ally", "AM": "AeroMe", "AMA": "MrWeb", + "AMADEUS": "AMADEUS", "AMAL": "AMAL", "AMAPT": "Amnis Finance", "AMATEN": "Amaten", @@ -443,13 +479,16 @@ "AMB": "AirDAO", "AMBER": "AmberCoin", "AMBO": "Sheertopia", + "AMBR": "Ambra", "AMBT": "AMBT Token", "AMDC": "Allmedi Coin", "AMDG": "AMDG", "AME": "Amepay", + "AMERICA": "America", "AMERICANCOIN": "AmericanCoin", "AMF": "AddMeFast", "AMG": "DeHeroGame Amazing Token", + "AMI": "AMMYI Coin", "AMIO": "Amino Network", "AMIS": "AMIS", "AMKT": "Alongside Crypto Market Index", @@ -474,14 +513,17 @@ "ANA": "Nirvana ANA", "ANAL": "AnalCoin", "ANALOS": "analoS", + "ANALY": "Analysoor", "ANB": "Angryb", "ANC": "Anchor Protocol", + "ANCHOR": "AnchorSwap", "ANCP": "Anacrypt", "ANCT": "Anchor", "AND": "AndromedaCoin", "ANDC": "Android chain", "ANDR": "Andromeda", "ANDROTTWEILER": "Androttweiler Token", + "ANDWU": "Chinese Andy", "ANDX": "Arrano", "ANDY": "ANDY", "ANGEL": "Crypto Angel", @@ -492,10 +534,11 @@ "ANI": "Animecoin", "ANIM": "Animalia", "ANIMA": "Realm Anima", + "ANIME": "Anime", "ANJ": "Aragon Court", "ANJI": "Anji", "ANK": "AlphaLink", - "ANKA.BITCI": "Ankaragücü Fan Token", + "ANKA": "Ankaragücü Fan Token", "ANKORUS": "Ankorus Token", "ANKR": "Ankr Network", "ANKRBNB": "Ankr Staked BNB", @@ -520,11 +563,13 @@ "ANV": "Aniverse", "ANW": "Anchor Neural World", "ANY": "Anyswap", + "ANYONE": "ANyONe Protocol", "AOC": "Alickshundra Occasional-Cortex", "AOG": "AgeOfGods", "AOK": "AOK", "AOP": "Averopay", "AOS": "AOS", + "AOT": "Age of Tanks", "AP": "AppleSwap AI", "APAD": "Anypad", "APC": "AlpaCoin", @@ -533,9 +578,12 @@ "APE": "ApeCoin", "APECOIN": "Asia Pacific Electronic Coin", "APED": "Baddest Alpha Ape Bundle", + "APES": "Alpha Petto Shells", + "APETARDIO": "Apetardio", "APEWIFHAT": "ApeWifHat", "APEX": "ApeX Protocol", "APEXCOIN": "ApexCoin", + "APEXT": "ApexToken", "APFC": "APF coin", "APH": "Aphelion", "API": "Application Programming Interface", @@ -559,7 +607,10 @@ "APT": "Aptos", "APTCOIN": "Aptcoin", "APTOGE": "Aptoge", - "APU": "Apu", + "APTR": "Aperture Finance", + "APU": "Apu Apustaja", + "APUAPU": "APU", + "APUGURL": "APU GURL", "APW": "APWine", "APX": "ApolloX", "APXP": "APEX Protocol", @@ -589,12 +640,15 @@ "ARBUZ": "ARBUZ", "ARC": "ArcticCoin", "ARCA": "Arca", + "ARCAD": "Arcadeum", "ARCADE": "ARCADE", + "ARCADEF": "arcadefi", "ARCANE": "Arcane Token", "ARCAS": "Arcas", "ARCH": "Archway", "ARCHA": "ArchAngel Token", "ARCHCOIN": "ArchCoin", + "ARCHE": "Archean", "ARCHIVE": "Chainback", "ARCHL": "ArchLoot", "ARCO": "AquariusCoin", @@ -646,6 +700,7 @@ "ARRO": "Arro Social", "ARRR": "Pirate Chain", "ARSL": "Aquarius Loan", + "ARSW": "ArthSwap", "ART": "Maecenas", "ARTC": "Artcoin", "ARTDECO": "ARTDECO", @@ -656,6 +711,7 @@ "ARTEQ": "artèQ", "ARTEX": "Artex", "ARTF": "Artfinity Token", + "ARTFI": "ARTFI", "ARTG": "Goya Giant Token", "ARTH": "ARTH", "ARTI": "Arti Project", @@ -682,8 +738,10 @@ "ASG": "Asgard", "ASGC": "ASG", "ASH": "ASH", + "ASI": "Artificial Superintelligence Alliance", "ASIA": "Asia Coin", "ASIMI": "ASIMI", + "ASIX": "ASIX+", "ASK": "Permission Coin", "ASKO": "Asko", "ASM": "Assemble Protocol", @@ -707,11 +765,13 @@ "ASTRA": "Astra Protocol", "ASTRADAO": "Astra DAO", "ASTRAFER": "Astrafer", + "ASTRAFERV1": "Astrafer v1", "ASTRAL": "Astral", "ASTRO": "AstroSwap", "ASTROC": "Astroport Classic", "ASTROLION": "AstroLion", "ASTRONAUT": "Astronaut", + "ASTROP": "AstroPepeX", "ASTX": "Asterix Labs", "ASUNA": "Asuna Hentai", "ASVA": "Asva", @@ -729,8 +789,10 @@ "ATF": "Alion Tech Food", "ATFI": "Atlantic Finance Token", "ATFS": "ATFS Project", - "ATH": "All Time High Vodka", + "ATH": "Aethir", "ATHE": "Atheios", + "ATHEN": "Athenas AI", + "ATHVODKA": "All Time High Vodka", "ATID": "AstridDAO Token", "ATK": "Attack Wagon", "ATKN": "A-Token", @@ -745,9 +807,11 @@ "ATMOS": "Novusphere", "ATN": "ATN", "ATNT": "Artizen", + "ATO": "Atocha Protocol", "ATOLO": "RIZON", "ATOM": "Cosmos", "ATON": "Further Network", + "ATOPLUS": "ATO+", "ATOR": "ATOR Protocol", "ATOZ": "Race Kingdom", "ATP": "Atlas Protocol", @@ -755,6 +819,7 @@ "ATR": "Ather", "ATRI": "Atari Token", "ATRNO": "AETERNUS", + "ATROFA": "Atrofarm", "ATS": "Atlas DEX", "ATT": "Attila", "ATTR": "Attrace", @@ -774,8 +839,9 @@ "AUNIT": "Aunit", "AUPC": "Authpaper", "AUR": "AUREO", - "AURA": "Aura Finance", + "AURA": "Aura Network", "AURABAL": "Aura BAL", + "AURAF": "Aura Finance", "AURO": "Aurora", "AURORA": "Aurora", "AURORAC": "Auroracoin", @@ -786,6 +852,7 @@ "AUSCM": "Auric Network", "AUSD": "Appeal dollar", "AUSDC": "Aave USDC v1", + "AUSDT": "aUSDT", "AUT": "Autoria", "AUTHORSHIP": "Authorship", "AUTISM": "AUTISM", @@ -826,6 +893,7 @@ "AVXT": "Avaxtars Token", "AWAX": "AWAX", "AWC": "Atomic Wallet Coin", + "AWK": "Awkward Monkey Base", "AWM": "Another World", "AWNEX": "AWNEX token", "AWO": "AiWork", @@ -848,6 +916,7 @@ "AXL": "Axelar", "AXLINU": "AXL INU", "AXLUSDC": "Axelar Wrapped USDC", + "AXLW": "Axel Wrapped", "AXM": "Axiome", "AXN": "Axion", "AXNT": "Axentro", @@ -868,7 +937,9 @@ "AZR": "Azure", "AZU": "Azultec", "AZUKI": "Azuki", + "AZUKIDAO": "AzukiDAO", "AZUM": "Azuma Coin", + "AZUR": "Azuro Protocol", "AZURE": "Azure Wallet", "AZY": "Amazy", "B": "BankCoin", @@ -885,13 +956,17 @@ "B91": "B91", "BA": "BAHA", "BAAS": "BaaSid", + "BAB": "Babacoin", "BABI": "Babylons", "BABL": "Babylon Finance", "BABY": "BabySwap", + "BABYANDY": "Baby Andy", + "BABYB": "Baby Bali", "BABYBINANCE": "BABYBINANCE", "BABYBITC": "BabyBitcoin", "BABYBNB": "BabyBNB", "BABYBNBTIGER": "BabyBNBTiger", + "BABYBO": "BabyBonk", "BABYBOB": "Baby Bob", "BABYBOME": "Book of Baby Memes", "BABYBOMEOW": "Baby of BOMEOW", @@ -900,15 +975,18 @@ "BABYCAT": "Baby Cat Coin", "BABYCATS": "Baby Cat Coin", "BABYCEO": "Baby Doge CEO", + "BABYCRASH": "BabyCrash", "BABYCRAZYT": "BABY CRAZY TIGER", "BABYCUBAN": "Baby Cuban", "BABYDOGE": "BabyDoge", "BABYDOGEINU": "BABY DOGE INU", + "BABYDOGEZILLA": "BabyDogeZilla", "BABYDRAGON": "Baby Dragon", "BABYELON": "BabyElon", "BABYFB": "Baby Floki Billionaire", "BABYFLOKI": "BabyFloki", "BABYFLOKIZILLA": "BabyFlokiZilla", + "BABYGME": "Baby GameStop", "BABYGOLDEN": "Baby Golden Coin", "BABYGROK": "Baby Grok", "BABYGUMMY": "BABY GUMMY", @@ -916,6 +994,7 @@ "BABYHONK": "Baby Honk", "BABYJERRY": "Baby Jerry", "BABYJESUS": "BabyJesusCoin", + "BABYKABOSU": "Baby Kabosu", "BABYKITTY": "BabyKitty", "BABYLONG": "Baby Long", "BABYMAGA": "Baby Maga", @@ -936,6 +1015,7 @@ "BABYSOL": "Baby Solana", "BABYSORA": "Baby Sora", "BABYSWEEP": "BabySweep", + "BABYT": "BABYTRUMP", "BABYTK": "Baby Tiger King", "BABYTOMCAT": "Baby Tomcat", "BABYTOSHI": "Baby Toshi", @@ -951,9 +1031,11 @@ "BADCAT": "Andy’s Alter Ego", "BADGER": "Badger DAO", "BAFC": "BabyApeFunClub", - "BAG": "BondAppetit", + "BAG": "Bag", "BAGS": "Basis Gold Share", + "BAHAMAS": "Bahamas", "BAI": "BearAI", + "BAICA": "Baica", "BAJU": "Bajun Network", "BAK": "BaconCoin", "BAKAC": "Baka Casino", @@ -966,12 +1048,13 @@ "BALIN": "Balin Bank", "BALLZ": "Wolf Wif", "BALPHA": "bAlpha", + "BALT": "Brett's cat", "BALTO": "Balto Token", "BAMA": "BabyAMA", + "BAMBIT": "BAMBIT", "BAMBOO": "BambooDeFi", "BAN": "Banano", - "BANANA": "ApeSwap", - "BANANAG": "Banana Gun", + "BANANA": "Banana Gun", "BANANAS": "Monkey Peepo", "BANC": "Babes and Nerds", "BANCA": "BANCA", @@ -985,10 +1068,12 @@ "BANX": "Banx.gg", "BAO": "Bao Finance", "BAOE": "Business Age of Empires", + "BAOM": "Battle of Memes", "BAOS": "BaoBaoSol", "BAR": "FC Barcelona Fan Token", "BARA": "Capybara", "BARC": "The Blu Arctic Water Company", + "BAREBEARS": "BAREBEARS", "BARK": "Bored Ark", "BARRON": "Time Traveler", "BART": "BarterTrade", @@ -997,6 +1082,7 @@ "BASEAI": "BaseAI", "BASED": "Based Money", "BASEDAI": "BasedAI", + "BASEHEROES": "Baseheroes", "BASH": "LuckChain", "BASHC": "BashCoin", "BASHOS": "Bashoswap", @@ -1009,12 +1095,13 @@ "BAT": "Basic Attention Token", "BATH": "Battle Hero", "BATS": "Batcoin", + "BAVA": "Baklava", "BAX": "BABB", "BAXS": "BoxAxis", "BAY": "BitBay", "BAYSE": "coynbayse", "BAZED": "Bazed Games", - "BB": "Baby Bali", + "BB": "BounceBit", "BB1": "Bitbond", "BBADGER": "Badger Sett Badger", "BBANK": "BlockBank", @@ -1025,6 +1112,7 @@ "BBCT": "TraDove B2BCoin", "BBDC": "Block Beats Network", "BBDT": "BBD Token", + "BBEER": "BABY BEERCOIN", "BBF": "Bubblefong", "BBFT": "Block Busters Tech Token", "BBG": "BigBang", @@ -1037,10 +1125,12 @@ "BBOS": "Blackbox Foundation", "BBP": "BiblePay", "BBR": "Boolberry", + "BBRETT": "Baby Brett", "BBS": "BBSCoin", "BBT": "BitBook", - "BBTC": "BlakeBitcoin", + "BBTC": "Binance Wrapped BTC", "BBTF": "Block Buster Tech Inc", + "BBUSD": "BounceBit USD", "BC": "Bitcoin Confidential", "BCA": "Bitcoin Atom", "BCAC": "Business Credit Alliance Chain", @@ -1048,7 +1138,7 @@ "BCAT": "BitClave", "BCAU": "BetaCarbon", "BCB": "BCB Blockchain", - "BCCOIN": "BitConnect Coin", + "BCCOIN": "BlackCardCoin", "BCD": "Bitcoin Diamond", "BCDN": "BlockCDN", "BCDT": "EvidenZ", @@ -1057,6 +1147,7 @@ "BCG": "BlockChainGames", "BCH": "Bitcoin Cash", "BCHA": "Bitcoin Cash ABC", + "BCHB": "Bitcoin Cash on Base", "BCHC": "BitCherry", "BCHT": "Blockchain Terminal", "BCI": "Bitcoin Interest", @@ -1072,6 +1163,7 @@ "BCNX": "BCNEX", "BCO": "BridgeCoin", "BCOIN": "Bombcrypto", + "BCOINM": "Bomb Crypto (MATIC)", "BCOQ": "BLACK COQINU", "BCP": "BitcashPay", "BCPT": "BlockMason Credit Protocol", @@ -1102,6 +1194,7 @@ "BDP": "Big Data Protocol", "BDPI": "Interest Bearing Defi Pulse Index", "BDR": "BlueDragon", + "BDRM": "Bodrumspor Fan Token", "BDROP": "BlockDrop", "BDX": "Beldex", "BDY": "Buddy DAO", @@ -1110,19 +1203,22 @@ "BEAI": "BeNFT Solutions", "BEAM": "Beam", "BEAMMW": "Beam", - "BEAN": "AzukiDAO", + "BEAN": "Bean", "BEANS": "Moonbeans", "BEAST": "CryptoBeast", "BEAT": "BEAT Token", "BEATLES": "JohnLennonC0IN", + "BEATS": "Sol Beats", "BEBE": "BEBE", "BEC": "Betherchip", "BECH": "Beauty Chain", + "BECN": "Beacon", "BECO": "BecoSwap Token", "BED": "Bankless BED Index", "BEE": "Herbee", "BEEP": "BEEP", - "BEER": "BEER Coin", + "BEER": "BEERCOIN", + "BEERUSCAT": "BeerusCat", "BEET": "BEETroot", "BEETLE": "Beetle Coin", "BEETOKEN": "Bee Token", @@ -1137,6 +1233,7 @@ "BELA": "Bela", "BELR": "Belrium", "BELT": "Belt", + "BELUGA": "Beluga", "BEM": "BEMIL Coin", "BEMD": "Betterment Digital", "BEN": "Ben", @@ -1156,6 +1253,7 @@ "BEPR": "Blockchain Euro Project", "BEPRO": "BEPRO Network", "BERN": "BERNcash", + "BERNIE": "BERNIE SENDERS", "BERRY": "Berry", "BES": "battle esports coin", "BESA": "Besa Gaming", @@ -1173,6 +1271,7 @@ "BETS": "BetSwirl", "BETT": "Bettium", "BETU": "Betu", + "BETZ": "Bet Lounge", "BEX": "BEX token", "BEY": "NBX", "BEYOND": "Beyond Protocol", @@ -1192,7 +1291,7 @@ "BFLOKI": "BurnFloki", "BFLY": "Butterfly Protocol", "BFT": "BF Token", - "BFT.BITCI": "Brazil Fan Token", + "BFTB": "Brazil Fan Token", "BFTC": "BITS FACTOR", "BFX": "BitFinex Tokens", "BG": "BunnyPark Game", @@ -1204,6 +1303,7 @@ "BGONE": "BigONE Token", "BGPT": "BlockGPT", "BGS": "Battle of Guardians Share", + "BGUY": "The Big Guy", "BGVT": "Bit Game Verse Token", "BHAO": "Bithao", "BHAT": "BH Network", @@ -1223,6 +1323,7 @@ "BIBL": "Biblecoin", "BIBO": "Bible of Memes", "BIC": "Bikercoins", + "BICITY": "BiCity AI Projects", "BICO": "Biconomy", "BICS": "Biceps", "BID": "TopBidder", @@ -1239,6 +1340,8 @@ "BIG": "Big Eyes", "BIGBANGCORE": "BigBang Core", "BIGHAN": "BighanCoin", + "BIGLEZ": "THE BIG LEZ SHOW", + "BIGMIKE": "Big Mike", "BIGSB": "BigShortBets", "BIGTIME": "Big Time", "BIGUP": "BigUp", @@ -1247,6 +1350,7 @@ "BIIS": "biis (Ordinals)", "BIKI": "BIKI", "BILL": "TillBilly", + "BILLICAT": "BilliCat", "BIM": "BitminerCoin", "BIND": "Compendia", "BINEM": "Binemon", @@ -1280,8 +1384,10 @@ "BITAIR": "Bitair", "BITASEAN": "BitAsean", "BITB": "BeanCash", + "BITBEDR": "Bitcoin EDenRich", "BITBOOST": "BitBoost", "BITBULL": "Bitbull", + "BITBURN": "Bitburn", "BITC": "BitCash", "BITCAR": "BitCar", "BITCAT": "Bitcat", @@ -1292,6 +1398,7 @@ "BITCOINC": "Bitcoin Classic", "BITCOINP": "Bitcoin Private", "BITCOINV": "BitcoinV", + "BITCONNECT": "BitConnect Coin", "BITCRATIC": "Bitcratic Token", "BITF": "Bit Financial", "BITFLIP": "BitFlip", @@ -1316,6 +1423,7 @@ "BITSZ": "Bitsz", "BITT": "BiTToken", "BITTO": "BITTO", + "BITUNE": "Bitune", "BITUSD": "bitUSD", "BITVOLT": "BitVolt", "BITX": "BitScreener", @@ -1341,14 +1449,19 @@ "BKT": "Blocktrade token", "BKX": "BANKEX", "BLA": "BlaBlaGame", + "BLAC": "Blacksmith Token", "BLACK": "BLACKHOLE PROTOCOL", + "BLACKD": "Blackder AI", "BLACKDRAGON": "Black Dragon", "BLACKROCK": "BlackRock", + "BLACKSALE": "Black Sale", "BLACKSWAN": "BlackSwan AI", "BLADE": "BladeWarrior", + "BLAKEBTC": "BlakeBitcoin", "BLANK": "Blank Token", "BLAS": "BlakeStar", "BLAST": "BLAST", + "BLASTA": "BlastAI", "BLAUNCH": "B-LAUNCH", "BLAZE": "Blaze", "BLAZEX": "BlazeX", @@ -1358,6 +1471,7 @@ "BLCT": "Bloomzed Loyalty Club Ticket", "BLD": "Agoric", "BLENDR": "Blendr Network", + "BLEPE": "Blepe", "BLERF": "BLERF", "BLES": "Blind Boxes", "BLF": "Baby Luffy", @@ -1384,11 +1498,14 @@ "BLOCKPAY": "BlockPay", "BLOCKS": "BLOCKS", "BLOCKSTAMP": "BlockStamp", + "BLOCKT": "Blocktools", + "BLOCKW": "Blockwise", "BLOCM": "BLOC.MONEY", "BLOCX": "BLOCX.", "BLOK": "Bloktopia", "BLOO": "bloo foster coin", "BLOODY": "Bloody Token", + "BLOOM": "BloomBeans", "BLOOMT": "Bloom Token", "BLOVELY": "Baby Lovely Inu", "BLOX": "BLOX", @@ -1435,6 +1552,7 @@ "BMICKEY": "Baby Mickey", "BMK": "Benchmark", "BMON": "Binamon", + "BMONEY": "B-money", "BMP": "Brother Music Platform", "BMT": "BMChain", "BMW": "BMW", @@ -1454,6 +1572,7 @@ "BNBFROG": "BNBFROG", "BNBH": "BnbHeroes Token", "BNBLION": "BNB LION", + "BNBOLYMPIC": "BNB OLYMPIC", "BNBP": "BNBPot", "BNBSNAKE": "BNB SNAKE", "BNBSONGOKU": "BNBsongoku", @@ -1490,13 +1609,17 @@ "BOBA": "Boba Network", "BOBAI": "Bob AI", "BOBAOPPA": "Bobaoppa", + "BOBBY": "Kennedy Coin", + "BOBBYM": "Bobby Moore", "BOBC": "Bobcoin", "BOBE": "BOOK OF BILLIONAIRES", "BOBO": "BOBO", "BOBS": "Bob's Repair", "BOBT": "BOB Token", + "BOBUKI": "Bobuki Neko", "BOC": "BOCOIN", "BOCA": "BookOfPussyCats", + "BOCAC": "BocaChica token", "BOCAT": "BOCAT", "BODA": "Based Yoda", "BODAV2": "BODA Token", @@ -1511,6 +1634,7 @@ "BOGCOIN": "Bogcoin", "BOGE": "Boge", "BOGEY": "Bogey", + "BOGGY": "Boggy Coin", "BOJAK": "Based Wojak", "BOJI": "BOJI Token", "BOK": "Blockium", @@ -1525,6 +1649,7 @@ "BOMB": "BOMB", "BOMBC": "BombCoin", "BOMBM": "Bomb Money", + "BOMBS": "Bomb Shelter Inu", "BOME": "BOOK OF MEME", "BOME2": "Book of Meme 2.0", "BOMEDOGE": "BOOK OF DOGE MEMES", @@ -1534,10 +1659,13 @@ "BON": "Bonpay", "BONA": "Bonafi", "BOND": "BarnBridge", + "BONDAPPETIT": "BondAppetit", "BONDLY": "Bondly", + "BONDLYV1": "Bondly Finance", "BONE": "Bone ShibaSwap", "BONES": "BonesCoin", "BONFIRE": "Bonfire", + "BONG": "BonkWifGlass", "BONIX": "Blockonix", "BONK": "Bonk", "BONKCON": "Bonkcon", @@ -1547,6 +1675,7 @@ "BONKH": "BonkHoneyHNTMobileSOL", "BONKIN": "Bonkinu", "BONKKONG": "BONK KONG", + "BONKONETH": "Bonk On ETH", "BONO": "Bonorum Coin", "BONTE": "Bontecoin", "BONUS": "BonusBlock", @@ -1556,6 +1685,7 @@ "BOOE": "Book of Ethereum", "BOOFI": "Boo Finance", "BOOK": "Solbook", + "BOOKIE": "BookieBot", "BOOM": "BOOM DAO", "BOOMCOIN": "Boom Token", "BOOMER": "Boomer", @@ -1575,11 +1705,13 @@ "BORUTO": "Boruto Inu", "BOS": "BOScoin", "BOSE": "Bitbose", + "BOSHI": "Boshi", "BOSOL": "Book of Solana", "BOSON": "Boson Protocol", "BOSONC": "BosonCoin", "BOSS": "BitBoss", "BOSSBABY": "BossBaby", + "BOSSCOQ": "THE COQFATHER", "BOST": "BoostCoin", "BOSU": "Bosu Inu", "BOT": "Bot Planet", @@ -1600,6 +1732,7 @@ "BOYS": "CRASHBOYS", "BOYSCLUB": "Matt Furie's Boys Club", "BOZO": "BOZO", + "BOZOH": "bozo Hybrid", "BOZY": "Book of Crazy", "BP": "BunnyPark", "BPAD": "BlokPad", @@ -1628,6 +1761,8 @@ "BRACE": "Bitci Racing Token", "BRAIN": "BrainCoin", "BRAINERS": "Brainers", + "BRAINZ": "Brainz Finance", + "BRAM": "Defibox bRAM", "BRANA": "Branaverse", "BRAND": "BrandProtect", "BRAT": "BROTHER", @@ -1636,22 +1771,28 @@ "BRAZ": "Brazio", "BRC": "Baer Chain", "BRCP": "BRCP Token", + "BRCST": "BRCStarter", "BRCT": "BRC App", "BRD": "Bread token", "BRDD": "BeardDollars", "BRDG": "Bridge Protocol", + "BREAD": "Breadchain Cooperative", "BREE": "CBDAO", "BREED": "BreederDAO", "BREPE": "BREPE", "BRETT": "Brett", "BRETTA": "Bretta", + "BRETTBASE": "Brett Base", + "BRETTETH": "Brett ETH", "BREW": "CafeSwap Token", + "BREWERY": "Brewery Consortium Coin", "BREWLABS": "Brewlabs", "BRG": "Bridge Oracle", "BRGE": "OrdBridge", "BRGX": "Bridge$", "BRI": "Baroin", "BRIA": "Briacoin", + "BRIAN": "Brianwifhat", "BRIC": "BrightCoin", "BRICK": "Brickchain FInance", "BRICKS": "MyBricks", @@ -1676,6 +1817,8 @@ "BROCK": "Bitrock", "BROGG": "Brett's Dog", "BRONZ": "BitBronze", + "BROOT": "BROOT", + "BROWN": "BrowniesSwap", "BRRR": "Burrow", "BRS": "Broovs Projects", "BRT": "Bikerush", @@ -1750,13 +1893,16 @@ "BTBS": "BitBase Token", "BTC": "Bitcoin", "BTC2": "Bitcoin 2", + "BTC2XFLI": "BTC 2x Flexible Leverage Index", "BTCA": "BITCOIN ADDITIONAL", + "BTCAB": "Bitcoin Avalanche Bridged", "BTCAS": "BitcoinAsia", "BTCAT": "Bitcoin Cat", "BTCB": "Bitcoin BEP2", "BTCBR": "Bitcoin BR", "BTCC": "Bitcoin Core", "BTCD": "BitcoinDark", + "BTCDRAGON": "BTC Dragon", "BTCE": "EthereumBitcoin", "BTCEX": "BtcEX", "BTCF": "BitcoinFile", @@ -1808,12 +1954,14 @@ "BTPL": "Bitcoin Planet", "BTQ": "BitQuark", "BTR": "BTRIPS", + "BTRC": "Bitro Coin", "BTRFLY": "Redacted Cartel", "BTRL": "BitcoinRegular", "BTRM": "Betrium Token", "BTRN": "Biotron", "BTRS": "Bitball Treasure", "BTRST": "Braintrust", + "BTRU": "Biblical Truth", "BTS": "Bitshares", "BTSC": "BTS Chain", "BTSE": "BTSE Token", @@ -1835,11 +1983,14 @@ "BTZN": "Bitzon", "BU": "BUMO", "BUB": "BUBCAT", + "BUBBA": "Bubba", + "BUBBLE": "Bubble", "BUBO": "Budbo", "BUBU": "BUBU", "BUC": "Beau Cat", "BUCK": "Coinbuck", "BUCKS": "SwagBucks", + "BUCKY": "Bucky", "BUD": "Buddy", "BUDDHA": "Buddha", "BUDG": "Bulldogswap", @@ -1856,6 +2007,7 @@ "BUILDTEAM": "BuildTeam", "BUK": "CryptoBuk", "BUL": "bul", + "BULEI": "Bulei", "BULL": "Bullieverse", "BULLC": "BuySell", "BULLINU": "Bull inu", @@ -1866,6 +2018,7 @@ "BULLSH": "Bullshit Inu", "BULLYINGCAT": "Bullying Cat", "BULT": "Bullit", + "BUM": "WillyBumBum", "BUMN": "BUMooN", "BUMP": "Bumper", "BUN": "BunnyCoin", @@ -1876,9 +2029,10 @@ "BUNNYINU": "Bunny Inu", "BUNNYROCKET": "BunnyRocket", "BURGER": "Burger Swap", - "BURN": "Bitburn", + "BURN": "BurnedFi", "BURNDOGE": "BurnDoge", "BURNIFYAI": "BurnifyAI", + "BURNKING": "BurnKing", "BURNNY": "Burnny Inu", "BURNS": "Burnsdefi", "BURNZ": "BURNZ", @@ -1918,6 +2072,7 @@ "BXH": "BXH", "BXK": "Bitbook Gambling", "BXMI": "Bxmi Token", + "BXN": "BlackFort Exchange Network", "BXR": "Blockster", "BXT": "BitTokens", "BXTB": "BXTB Foundation", @@ -1955,6 +2110,7 @@ "CAB": "CabbageUnit", "CABO": "CatBonk", "CABS": "CryptoABS", + "CACAO": "Maya Protocol", "CACH": "Cachecoin", "CACHE": "Cache", "CACHEGOLD": "CACHE Gold", @@ -1995,6 +2151,7 @@ "CANDY": "UnicornGo Candy", "CANDYLAD": "Candylad", "CANN": "CannabisCoin", + "CANNF": "CANNFINITY", "CANTI": "Cantina Royale", "CANTO": "CANTO", "CANYA": "CanYaCoin", @@ -2003,6 +2160,7 @@ "CAPD": "Capdax", "CAPO": "IL CAPO OF CRYPTO", "CAPP": "Cappasity", + "CAPRI": "Caprisun Monkey", "CAPRICOIN": "CapriCoin", "CAPS": "Ternoa", "CAPT": "Bitcoin Captain", @@ -2015,10 +2173,12 @@ "CARBONGEMS": "Carbon GEMS", "CARD": "Cardstack", "CARDS": "Cardstarter", + "CARDSWAP": "CardSwap", "CARE": "Carebit", "CARES": "CareCoin", "CARLO": "Carlo", "CARO": "Meta Ricaro", + "CAROL": "CAROLToken", "CARPE": "CarpeDiemCoin", "CARR": "Carnomaly", "CARROT": "CarrotSwap", @@ -2048,6 +2208,7 @@ "CATELON": "CatElonMars", "CATEX": "CATEX", "CATFISH": "Catfish", + "CATGAME": "Cookie Cat Game", "CATGIRL": "Catgirl", "CATGPT": "CatGPT", "CATHAT": "catwifhat", @@ -2062,6 +2223,7 @@ "CATS": "CatCoin Token", "CATSHIRA": "Shira Cat", "CATT": "Catex", + "CATVAX": "Catvax", "CATVILLS": "Catvills Coin", "CATWARRIOR": "Cat warrior", "CATWIF": "CatWifHat", @@ -2075,6 +2237,7 @@ "CAW": "A Hunters Dream", "CAWCEO": "CAW CEO", "CB": "COINBIG", + "CBAB": "CreBit", "CBABY": "Cosmo Baby", "CBANK": "Crypto Bank", "CBAT": "Compound Basic Attention Token", @@ -2200,12 +2363,16 @@ "CGS": "Crypto Gladiator Shards", "CGT": "Coin Gabbar Token", "CGU": "Crypto Gaming United", + "CGV": "Cogito Finance", "CHA": "Charity Coin", + "CHACHA": "Chacha", "CHAD": "Chad Coin", + "CHADCAT": "CHAD CAT", "CHADS": "CHADS VC", "CHAIN": "Chain Games", "CHAINCADE": "ChainCade", "CHAL": "Chalice Finance", + "CHAM": "Champion", "CHAMP": "NFT Champions", "CHAMPZ": "Champz", "CHAN": "ChanCoin", @@ -2218,6 +2385,8 @@ "CHARM": "Charm Coin", "CHARS": "CHARS", "CHART": "BetOnChart", + "CHARTA": "CHARTAI", + "CHARTIQ": "ChartIQ", "CHASH": "CleverHash", "CHAT": "Solchat", "CHATGPT": "AI Dragon", @@ -2228,12 +2397,16 @@ "CHECK": "Paycheck", "CHECKR": "CheckerChain", "CHECOIN": "CheCoin", + "CHED": "Giggleched", "CHEDDA": "Chedda", + "CHEEKS": "CHEEKS", "CHEEL": "Cheelee", "CHEEMS": "Cheems", + "CHEEPEPE": "CHEEPEPE", "CHEERS": "DICAPRIO CHEERS", "CHEESE": "CHEESE", "CHEESUS": "Cheesus", + "CHENG": "Chengshi", "CHEQ": "CHEQD Network", "CHER": "Cherry Network", "CHERRY": "CherrySwap", @@ -2250,15 +2423,19 @@ "CHI": "Chi Gastoken", "CHICA": "CHICA", "CHICKS": "SolChicks", + "CHIDO": "Chinese Doge Wow", "CHIEF": "TheChiefCoin", "CHIHUA": "Chihua Token", "CHII": "Chiiper Chain", "CHILD": "ChildCoin", "CHILI": "CHILI", "CHILL": "ChillPill", + "CHIM": "Chimera", "CHINAZILLA": "ChinaZilla", + "CHINGON": "Mexico Chingon", "CHINU": "Chubby Inu", "CHIP": "Chip", + "CHIPPY": "Chippy", "CHIPS": "CHIPS", "CHIRP": "Chirp", "CHITCAT": "ChitCAT", @@ -2272,8 +2449,11 @@ "CHNG": "Chainge Finance", "CHO": "Choise", "CHOKE": "Artichoke Protocol", + "CHOMP": "ChompCoin", + "CHON": "Chonk The Cat", "CHONK": "Chonk", "CHONKY": "CHONKY", + "CHOO": "Chooky", "CHOOF": "ChoofCoin", "CHOPPER": "Chopper Inu", "CHOPPY": "Choppy", @@ -2282,18 +2462,22 @@ "CHOY": "Bok Choy", "CHP": "CoinPoker Token", "CHR": "Chroma", + "CHRETT": "Chinese BRETT", "CHRISPUMP": "Christmas Pump", "CHRP": "Chirpley", "CHS": "Chainsquare", "CHSB": "SwissBorg", "CHT": "Countinghouse Fund", + "CHUANPU": "Chuan Pu", "CHUB": "CallHub", + "CHUC": "CHUCK", "CHUCHU": "CHUCHU", "CHUCK": "Chuck Norris", "CHUMP": "Chump Change", "CHURRO": "CHURRO-The Jupiter Dog", "CHVF": "Chives Finance", "CHW": "Chrysalis Coin", + "CHWY": "CHEWY", "CHX": "Own", "CHY": "Concern Poverty Chain", "CHZ": "Chiliz", @@ -2336,6 +2520,7 @@ "CL": "CoinLancer", "CLA": "ClaimSwap", "CLAM": "CLAMS", + "CLAS": "Classic USDC", "CLASS": "Class Coin", "CLAY": "Clay Nation", "CLB": "Cloudbric", @@ -2399,6 +2584,7 @@ "CML": "Camelcoin", "CMM": "Commercium", "CMN": "Crypto Media Network", + "CMONK": "CRAZY MONKEY", "CMOON": "CryptoMoonShot", "CMOS": "CoinMerge OS", "CMP": "Caduceus", @@ -2454,6 +2640,7 @@ "CODI": "Codi Finance", "CODY": "Coindy", "COE": "CoEval", + "COFEEE": "COFEEE", "COFFEECOIN": "CoffeeCoin", "COFI": "CoinFi", "COFIX": "CoFIX", @@ -2466,11 +2653,13 @@ "COINBT": "CoinBot", "COINDEFI": "Coin", "COING": "Coingrid", + "COINH": "Coinhound", "COINLION": "CoinLion", "COINSCOPE": "Coinscope", "COINSL": "CoinsLoot", "COINVEST": "Coinvest", "COINYE": "Coinye West", + "COK": "Cat Own Kimono", "COKE": "Cocaine Cowboy Shards", "COL": "Clash of Lilliput", "COLA": "Cola", @@ -2494,8 +2683,10 @@ "COMP": "Compound Governance Token", "COMPCOIN": "Compcoin", "COMPD": "Compound Coin", + "COMPU": "Compute Network", "COMT": "Community Token", "CONAN": "Conan", + "CONC": "Concentrator", "CONDENSATE": "Condensate", "CONDO": "CONDO", "CONE": "BitCone", @@ -2507,6 +2698,7 @@ "CONSENTIUM": "Consentium", "CONV": "Convergence", "CONX": "Connex", + "COOCHIE": "Cucci", "COOHA": "CoolHash", "COOK": "Cook", "COOL": "CoolCoin", @@ -2517,7 +2709,7 @@ "COPS": "Cops Finance", "COPYCAT": "Copycat Finance", "COQ": "Coq Inu", - "COR": "Corion", + "COR": "Coreto", "CORAL": "CoralPay", "CORE": "Core", "COREDAO": "coreDAO", @@ -2526,12 +2718,14 @@ "CORGI": "Corgi Inu", "CORGIAI": "CorgiAI", "CORGIB": "The Corgi of PolkaBridge", + "CORION": "Corion", "CORN": "CORN", "CORNELLA": "CORNELLA", "CORX": "CorionX", "COS": "Contentos", "COSHI": "CoShi Inu", "COSM": "CosmoChain", + "COSMI": "Cosmic FOMO", "COSMIC": "CosmicSwap", "COSP": "Cosplay Token", "COSS": "COS", @@ -2562,6 +2756,7 @@ "COZP": "COZPlus", "COZY": "Cozy Pepe", "CP": "CoPuppy", + "CPA": "CryptoPulse AdBot", "CPAD": "Cronospad", "CPAN": "CryptoPlanes", "CPAY": "CryptoPay", @@ -2629,6 +2824,7 @@ "CREA": "CreativeChain", "CREAL": "Celo Brazilian Real", "CREAM": "Cream", + "CREAML": "Creamlands", "CREATIVE": "Creative Token", "CRED": "Verify", "CREDI": "Credefi", @@ -2661,9 +2857,11 @@ "CRNCHY": "Crunchy Network", "CRNK": "CrankCoin", "CRO": "Cronos", + "CROAK": "Croakey", "CROAT": "Croat", "CROB": "Crob Coin", "CROCO": "Croco", + "CRODIE": "Crodie", "CROGE": "Crogecoin", "CROID": "Cronos ID", "CRON": "Cryptocean", @@ -2684,7 +2882,9 @@ "CRTM": "Cryptum", "CRTS": "Cratos", "CRU": "Crust Network", + "CRUD": "CRUDE OIL BRENT", "CRUIZ": "Cruiz", + "CRUMP": "Crypto Trump", "CRUX": "CryptoMines Reborn", "CRV": "Curve DAO Token", "CRVUSD": "crvUSD", @@ -2693,12 +2893,14 @@ "CRWD": "CRWD Network", "CRWNY": "Crowny Token", "CRX": "ChronosCoin", + "CRY": "Crypto News Flash AI", "CRYN": "CRYN", "CRYO": "CryoDAO", "CRYP": "CrypticCoin", "CRYPT": "CryptCoin", "CRYPTOBULLION": "CryptoBullion", "CRYPTOE": "Cryptoenter", + "CRYPTON": "CRYPTON", "CRYPTONITE": "Cryptonite", "CRYPTOPRO": "CryptoProfile", "CRYPTOSDG": "Crypto SDG", @@ -2711,7 +2913,7 @@ "CSAI": "Compound SAI", "CSAS": "csas (Ordinals)", "CSC": "CasinoCoin", - "CSEN": "Consensus", + "CSEN": "Sentient Coin", "CSH": "CashOut", "CSIX": "Carbon Browser", "CSM": "Crust Shadow", @@ -2729,9 +2931,10 @@ "CSTL": "Castle", "CSTR": "CoreStarter", "CSUSHI": "cSUSHI", - "CSWAP": "CardSwap", + "CSWAP": "ChainSwap", "CSX": "Coinstox", "CT": "CryptoTwitter", + "CTA": "Cross The Ages", "CTAG": "CTAGtoken", "CTASK": "CryptoTask", "CTC": "Creditcoin", @@ -2749,6 +2952,7 @@ "CTLX": "Cash Telex", "CTN": "Continuum Finance", "CTO": "Crypto", + "CTOK": "Codyfight", "CTP": "Ctomorrow Platform", "CTPL": "Cultiplan", "CTPT": "Contents Protocol", @@ -2762,15 +2966,18 @@ "CTX": "Cryptex", "CTXC": "Cortex", "CTY": "Connecty", + "CU": "Crypto Unicorns", "CUAN": "CuanSwap.com", "CUB": "Cub Finance", "CUBE": "Cube Network", "CUBEAUTO": "Cube", "CUBEB": "CubeBase", + "CUCCI": "Cat in Gucci", "CUCK": "Cuckadoodledoo", "CUDOS": "Cudos", "CUE": "CUE Protocol", "CUEX": "Cuex", + "CUFF": "Jail Cat", "CULO": "CULO", "CULT": "Cult DAO", "CUM": "Cumbackbears", @@ -2781,6 +2988,7 @@ "CURE": "Curecoin", "CURI": "Curium", "CURIO": "Curio Governance", + "CURR": "Curry", "CURRY": "CurrySwap", "CUSD": "Carbon", "CUSDC": "Compound USD Coin", @@ -2799,6 +3007,7 @@ "CVCOIN": "Crypviser", "CVG": "Convergence", "CVIP": "CVIP", + "CVN": "ConsciousDao", "CVNC": "CovenCoin", "CVNG": "Crave-NG", "CVNT": "Conscious Value Network", @@ -2838,11 +3047,14 @@ "CXP": "Caixa Pay", "CXPAD": "CoinxPad", "CXT": "Coinonat", + "CY97": "Cyclops97", + "CYB": "CYBERTRUCK", "CYBA": "CYBRIA", "CYBER": "CyberConnect", "CYBERC": "CyberCoin", "CYBERD": "Cyber Doge", "CYBERTRUCK": "Cyber Truck", + "CYBERTRUMP": "CyberTrump", "CYBERWAY": "CyberWay", "CYBONK": "CYBONK", "CYBR": "CYBR", @@ -2860,6 +3072,7 @@ "CYMT": "CyberMusic", "CYOP": "CyOp Protocol", "CYP": "CypherPunkCoin", + "CYPEPE": "CyPepe", "CYRS": "Cyrus Token", "CYRUS": "Cyrus Exchange", "CYS": "BlooCYS", @@ -2892,6 +3105,7 @@ "DACXI": "Dacxi", "DAD": "DAD", "DADA": "DADA", + "DADDY": "Daddy Tate", "DADDYDOGE": "Daddy Doge", "DADI": "Edge", "DAF": "DaFIN", @@ -2912,6 +3126,7 @@ "DAM": "Datamine", "DAMEX": "DAMEX", "DAMO": "Coinzen", + "DAMOON": "Damoon Coin", "DAN": "Daneel", "DANA": "Ardana", "DANG": "Guangdang", @@ -2936,6 +3151,7 @@ "DARC": "Konstellation", "DARCRUS": "Darcrus", "DARE": "The Dare", + "DARED": "Daredevil Dog", "DARICO": "Darico", "DARIK": "Darik", "DARK": "Dark", @@ -2998,8 +3214,9 @@ "DCC": "Distributed Credit Chain", "DCCT": "DocuChain", "DCHF": "DeFi Franc", + "DCI": "Decentralized Cloud Infrastructure", "DCIP": "Decentralized Community Investment Protocol", - "DCK": "DickCoin", + "DCK": "DexCheck AI", "DCLOUD": "DecentraCloud", "DCM": "Ducky City", "DCN": "Dentacoin", @@ -3037,6 +3254,7 @@ "DEBASE": "Debase", "DEBT": "The Debt Box", "DEC": "Decentr", + "DECENTRALG": "Decentral Games ICE", "DECHAT": "Dechat", "DECI": "Maximus DECI", "DECL": "Decimal token", @@ -3051,10 +3269,12 @@ "DEEZ": "DEEZ NUTS", "DEFC": "Defi Coin", "DEFEND": "Blockdefend AI", - "DEFI": "Defi", + "DEFI": "DeFi", "DEFI5": "DEFI Top 5 Tokens Index", "DEFIDO": "DeFido", + "DEFIK": "DeFi Kingdoms JADE", "DEFIL": "DeFIL", + "DEFILAB": "Defi", "DEFISCALE": "DeFiScale", "DEFIT": "Digital Fitness", "DEFLA": "Defla", @@ -3078,6 +3298,8 @@ "DEL": "Decimal", "DELCHAIN": "DelChain", "DELFI": "DeltaFi", + "DELI": "NFTDeli", + "DELIGHTPAY": "DelightPay", "DELOT": "DELOT.IO", "DELTA": "Delta Financial", "DELTAC": "DeltaChain", @@ -3086,6 +3308,7 @@ "DEMIR": "Adana Demirspor Token", "DEMOS": "DEMOS", "DENT": "Dent", + "DENTX": "DENTNet", "DEO": "Demeter", "DEOD": "Decentrawood", "DEOR": "Decentralized Oracle", @@ -3195,10 +3418,13 @@ "DICEM": "DICE Money", "DICETRX": "TRONbetDice", "DICK": "adDICKted", + "DICKCOIN": "DickCoin", "DID": "Didcoin", + "DIDID": "Didi Duck", "DIE": "Die Protocol", "DIEM": "Facebook Diem", "DIESEL": "Diesel", + "DIFF": "Diffusion", "DIFI": "Digital Files", "DIFX": "Digital Financial Exchange", "DIG": "DIEGO", @@ -3213,6 +3439,7 @@ "DIGS": "Diggits", "DIKO": "Arkadiko", "DILI": "D Community", + "DILIGENT": "Diligent Pepe", "DILL": "dillwifit", "DIM": "DIMCOIN", "DIME": "DimeCoin", @@ -3222,6 +3449,7 @@ "DINGER": "Dinger Token", "DINGO": "Dingocoin", "DINO": "DinoSwap", + "DINT": "DinarTether", "DINU": "Dogey-Inu", "DINW": "Dinowars", "DIO": "Decimated", @@ -3252,9 +3480,11 @@ "DKKT": "DKK Token", "DKNIGHT": "Dark Knight", "DKS": "DarkShield", + "DKT": "Duelist King", "DKUMA": "KumaDex Token", "DLA": "Dolla", "DLANCE": "DeeLance", + "DLB": "DiemLibre", "DLC": "Diamond Launch", "DLISK": "Dlisk", "DLLR": "Sovryn Dollar", @@ -3271,6 +3501,7 @@ "DLYCOP": "Daily COP", "DMA": "Dragoma", "DMAIL": "DMAIL Network", + "DMAR": "DMarket", "DMC": "Dream21", "DMCC": "DiscoverFeed", "DMCH": "DARMA Cash", @@ -3283,12 +3514,14 @@ "DMOD": "Demodyfi Token", "DMOON": "Dollarmoon", "DMS": "Documentchain", - "DMT": "DMarket", + "DMT": "Dream Machine Token", "DMTC": "Demeter Chain", "DMTR": "Dimitra", "DMX": "Dymmax", + "DMZ": "DeMon Token", "DN8": "Pldgr", "DNA": "Metaverse", + "DND": "Diamond DND", "DNET": "DeNet", "DNF": "DNFT Protocol", "DNFLX": "Netflix Tokenized Stock Defichain", @@ -3304,7 +3537,7 @@ "DNX": "Dynex", "DNXC": "DinoX", "DNY": "Dynasty Coin", - "DNZ.BITCI": "Denizlispor Fan Token", + "DNZ": "Denizlispor Fan Token", "DOBBY": "Dobby", "DOBEN": "dark boden", "DOBO": "DogeBonk", @@ -3319,7 +3552,7 @@ "DODO": "DODO", "DOE": "Dogs Of Elon", "DOFI": "Doge Floki Coin", - "DOG": "The Doge NFT", + "DOG": " DOG•GO•TO•THE•MOON", "DOGA": "Dogami", "DOGACOIN": "DogaCoin", "DOGAI": "Dogai", @@ -3331,6 +3564,7 @@ "DOGE": "Dogecoin", "DOGE1SAT": "DOGE-1SATELLITE", "DOGE20": "Doge 2.0", + "DOGEB": "DogeBonk", "DOGEBNB": "DogeBNB", "DOGEC": "DogeCash", "DOGECEO": "Doge CEO", @@ -3348,19 +3582,26 @@ "DOGEKING": "DogeKing", "DOGELEGION": "DOGE LEGION", "DOGEMETA": "Dogemetaverse", + "DOGEMOB": "DOGEMOB", + "DOGENFT": "The Doge NFT", "DOGEP": "Doge Protocol", "DOGEPAY": "Doge Payment", + "DOGER": "Robotic Doge", "DOGERA": "Dogera", "DOGES": "Dogeswap", "DOGESWAP": "Dogeswap Token (HECO)", "DOGETH": "EtherDoge", + "DOGEVERSE": "DogeVerse", "DOGEWHALE": "Dogewhale", "DOGEX": "DogeHouse Capital", "DOGEY": "Dogey", "DOGEZILLA": "DogeZilla", + "DOGGS": "Doggensnout", "DOGGY": "Doggy", + "DOGH": "a dog in a hoodie", "DOGI": "dogi", "DOGIN": "Doginhood", + "DOGINC": "dog in cats world", "DOGINME": "doginme", "DOGIRA": "Dogira", "DOGMI": "DOGMI", @@ -3371,6 +3612,7 @@ "DOGSROCK": "Dogs Rock", "DOGSWAG": "DogSwaghat", "DOGWIFHAT": "dogwifhat", + "DOGWIFSEAL": "dogwifseal", "DOGY": "DogeYield", "DOGZ": "Dogz", "DOJO": "ProjectDojo", @@ -3386,29 +3628,37 @@ "DON": "Donnie Finance", "DONA": "DONASWAP", "DONALD": "DONALD TRUMP", + "DONALDT": "Donald The Trump", "DONATION": "DonationCoin", "DONG": "DongCoin", "DONGO": "Dongo AI", "DONK": "Don-key", + "DONKE": "DONKE", "DONS": "The Dons", "DONU": "Donu", "DONUT": "Donut", "DONUTS": "The Simpsons", "DOODOO": "Doodoo", + "DOOGLE": "Doogle", "DOOH": "Bidooh", + "DOOMER": "Doomer", "DOOR": "DOOR", "DOPE": "Dopamine App", "DOPECOIN": "DopeCoin", + "DOPU": "DOPU The Dog with A Purpose", "DOR": "Dorado", "DORA": "Dora Factory", + "DORAV1": "Dora Factory v1", "DORK": "DORK", "DORKL": "DORK LORD", + "DORKY": "Dork Lord", "DOS": "DOS Network", "DOSE": "DOSE", "DOSHIB": "DogeShiba", "DOT": "Polkadot", "DOTC": "Dotcoin", "DOTR": "Cydotori", + "DOUG": "Doug The Duck", "DOUGH": "PieDAO v2 (DOUGH)", "DOV": "DOVU", "DOVI": "Dovi(Ordinals)", @@ -3416,12 +3666,13 @@ "DOWS": "Shadows", "DP": "DigitalPrice", "DPAD": "Dpad Finance", - "DPAY": "DelightPay", + "DPAY": "Devour", "DPDBC": "PDBC Defichain", "DPET": "My DeFi Pet", "DPEX": "DPEX", "DPI": "DeFiPulse Index", "DPIE": "DeFiPie", + "DPLAT": "zbyte", "DPLN": "DePlan", "DPLTR": "Palantir Tokenized Stock Defichain", "DPN": "DIPNET", @@ -3438,6 +3689,7 @@ "DRACO": "DT Token", "DRACOO": "DracooMaster", "DRAFTC": "Draftcoin", + "DRAGGY": "Draggy", "DRAGON": "Dragon", "DRAGONGROK": "DragonGROK", "DRAGONKING": "DragonKing", @@ -3447,6 +3699,7 @@ "DRAM": "DRAM", "DRAW": "Drawshop Kingdom Reverse", "DRB": "Digimon Rabbit", + "DRBT": "DeFi-Robot", "DRC": "DRC Mobility", "DRCT": "Ally Direct", "DRE": "DoRen", @@ -3490,6 +3743,7 @@ "DSK": "Darüşşafaka Spor Kulübü Token", "DSLA": "DSLA Protocol", "DSLV": "iShares Silver Trust Defichain", + "DSQ": "Dsquared.finance", "DSR": "Desire", "DSRUN": "Derby Stars", "DST": "Double Swap Token", @@ -3506,6 +3760,7 @@ "DTEP": "DECOIN", "DTG": "Defi Tiger", "DTH": "Dether", + "DTJR": "Donald Trump Jr.", "DTLT": "iShares 20+ Year Treasury Bond ETF Defichain", "DTN": "Datareum", "DTO": "DotOracle", @@ -3528,9 +3783,13 @@ "DUCKD": "DuckDuckCoin", "DUCKER": "Ducker", "DUCKIES": "Yellow Duckies", + "DUCKO": "Duck Off Coin", + "DUCX": "DucatusX", "DUDE": "DuDe", - "DUEL": "Duel Network", + "DUEL": "GameGPT", "DUELERS": "Block Duelers", + "DUELN": "Duel Network", + "DUELV1": "Duel Network v1", "DUET": "Duet Protocol", "DUG": "DUG", "DUGE": "DUGE", @@ -3543,6 +3802,7 @@ "DUO": "ParallelCoin", "DUOT": "DUO Network", "DUREV": "Povel Durev", + "DURTH": "iShares MSCI World ETF Tokenized Stock Defichain", "DUSD": "Decentralized USD", "DUSK": "Dusk Network", "DUST": "DUST Protocol", @@ -3554,6 +3814,7 @@ "DVF": "Rhino.fi", "DVG": "DAOventures", "DVI": "Dvision Network", + "DVINCI": "Davinci Jeremie", "DVK": "Devikins", "DVNQ": "Vanguard Real Estate Tokenized Stock Defichain ()", "DVOO": "Vanguard S&P 500 ETF Tokenized Stock Defichain", @@ -3595,6 +3856,7 @@ "DYNEX": "Dynex GPU", "DYNMT": "Dynamite", "DYNO": "DYNO", + "DYOR": "DYOR Token", "DYP": "Dypius", "DYPV1": "Dypius v1", "DYST": "Dystopia", @@ -3622,6 +3884,7 @@ "EASYF": "EasyFeedback", "EAT": "EDGE Activity Token", "EAURIC": "Eauric", + "EAVE": "EaveAI", "EB3": "EB3coin", "EBA": "Elpis Battle", "EBASE": "EURBASE", @@ -3649,7 +3912,10 @@ "ECG": "EcoSmart", "ECH": "EthereCash", "ECHO": "ECHO BOT", + "ECHOD": "EchoDEX", "ECHT": "e-Chat", + "ECI": "Euro Cup Inu", + "ECL": "ECLAT", "ECLD": "Ethernity Cloud", "ECLIP": "Eclipse", "ECO": "Ormeus Ecosystem", @@ -3689,6 +3955,7 @@ "EDOGE": "ElonDoge", "EDR": "Endor Protocol Token", "EDRC": "EDRCoin", + "EDSE": "Eddie Seal", "EDT": "E-Drive Token", "EDU": "Open Campus", "EDUC": "EducoinV", @@ -3700,6 +3967,7 @@ "EETH": "ether fi", "EFBAI": "EuroFootball AI", "EFC": "Everton Fan Token", + "EFCR": "EFLANCER", "EFFT": "Effort Economy ", "EFI": "Efinity", "EFIL": "Ethereum Wrapped Filecoin", @@ -3710,6 +3978,7 @@ "EG": "EG Token", "EGAME": "Every Game", "EGAS": "ETHGAS", + "EGAX": "Egochain", "EGAZ": "EGAZ", "EGC": "EverGrowCoin", "EGCC": "Engine", @@ -3723,6 +3992,7 @@ "EGI": "eGame", "EGLD": "eGold", "EGO": "EGOcoin", + "EGOD": "EgodCoin", "EGOLD": "EGOLD", "EGON": "EgonCoin", "EGR": "Egoras Rights", @@ -3764,6 +4034,7 @@ "ELET": "Elementeum", "ELF": "aelf", "ELFI": "ELYFI", + "ELFW": "ELF Wallet", "ELG": "EscoinToken", "ELGATO": "el gato", "ELI": "GoCrypto", @@ -3778,6 +4049,7 @@ "ELMO": "ELMOERC", "ELMON": "Elemon", "ELMT": "Element", + "ELO": "ElonPark", "ELON": "Dogelon Mars", "ELON2024": "ELON 2024(BSC)", "ELON404": "Elon404", @@ -3787,6 +4059,7 @@ "ELONGD": "Elongate Deluxe", "ELONGT": "Elon GOAT", "ELONIUM": "Elonium", + "ELONM": "ELON MEME", "ELONMARS": "ELON MARS", "ELONONE": "AstroElon", "ELONPEPE": "Elon Pepe Robot", @@ -3811,10 +4084,13 @@ "EMB": "Overline Emblem", "EMBER": "EmberCoin", "EMBR": "Embr", - "EMC": "Emercoin", + "EMC": "Edge Matrix Computing", "EMC2": "Einsteinium", "EMD": "Emerald", + "EMERCOIN": "Emercoin", "EMIGR": "EmiratesGoldCoin", + "EMILY": "Emily", + "EMIT": "Time Machine NFTs", "EML": "EML Protocol", "EMN.CUR": "Eastman Chemical", "EMOJI": "MOMOJI", @@ -3826,6 +4102,7 @@ "EMPH": "Emphy", "EMPIRE": "Empire Token", "EMPR": "empowr", + "EMR": "Emorya Finance", "EMRLD": "The Emerald Company", "EMRX": "Emirex Token", "EMT": "EasyMine", @@ -3836,6 +4113,7 @@ "ENC": "Encores Token", "ENCD": "Encircled", "ENCN": "EndChain", + "ENCR": "ENCRYPT", "ENCRYPG": "EncrypGen", "ENCS": "ENCOINS", "ENCX": "Encrybit", @@ -3941,9 +4219,10 @@ "ESBC": "ESBC", "ESCE": "Escroco Emerald", "ESCROW": "Cryptegrity DAO", + "ESCU": "EYESECU AI", "ESD": "Empty Set Dollar", "ESE": "Eesee", - "ESES.BITCI": "Eskişehir Fan Tokens", + "ESES": "Eskişehir Fan Tokens", "ESG": "ESG", "ESGC": "ESG Chain", "ESH": "Switch", @@ -3952,6 +4231,7 @@ "ESNC": "Galaxy Arena Metaverse", "ESP": "Espers", "ESPR": "Espresso Bot", + "ESRC": "ESR Coin", "ESS": "Essentia", "EST": "ESports Chain", "ESTATE": "AgentMile", @@ -3964,6 +4244,7 @@ "ETBT": "Ethereum Black", "ETC": "Ethereum Classic", "ETE": "EXTRADECOIN", + "ETER": "Eternal AI", "ETERNAL": "CryptoMines Eternal", "ETERNALC": "Eternal Coin", "ETERNALT": "Eternal Token", @@ -3985,6 +4266,7 @@ "ETHERKING": "Ether Kingdoms Token", "ETHERNITY": "Ethernity Chain", "ETHEROLL": "Etheroll", + "ETHERW": "Ether Wars", "ETHF": "EthereumFair", "ETHFAI": "ETHforestAI", "ETHFI": "Ether.fi", @@ -4024,10 +4306,12 @@ "ETX": "Ethrix", "ETY": "Ethereum Cloud", "ETZ": "EtherZero", + "EU24": "EURO2024", "EUC": "Eurocoin", "EUCOIN": "EU Coin", "EUCX": "EUCX", "EUL": "Euler", + "EULER": "Euler Tools", "EUM": "Elitium", "EUNO": "EUNO", "EURC": "Euro Coin", @@ -4065,10 +4349,12 @@ "EVN": "Evn Token", "EVO": "EvoVerses", "EVOAI": "EvolveAI", + "EVOC": "EVOCPLUS", "EVOL": "EVOL NETWORK", "EVOS": "EVOS", "EVR": "Everus", "EVRICE": "Evrice", + "EVRM": "Evrmore", "EVRT": "Everest Token", "EVRY": "Evrynet", "EVT": "EveriToken", @@ -4132,6 +4418,7 @@ "FAB": "FABRK Token", "FABA": "Faba Invest", "FABRIC": "MetaFabric", + "FAC": "Flying Avocado Cat", "FACE": "FaceDAO", "FACETER": "Faceter", "FACT": "Orcfax", @@ -4147,9 +4434,11 @@ "FAKEAI": "DeepFakeAI", "FAKT": "Medifakt", "FALCONS": "Falcon Swaps", + "FALX": "FalconX", "FAME": "Fame MMA", "FAMEC": "FameCoin", "FAMILY": "The Bitcoin Family", + "FAMOUSF": "Famous Fox Federation", "FAN": "Fanadise", "FAN360": "Fan360", "FANC": "fanC", @@ -4166,13 +4455,14 @@ "FARMC": "FARM Coin", "FARMING": "Farming Bad", "FARMS": "Farmsent", - "FAST": "PodFast", + "FAST": "Fastswap", "FASTMOON": "FastMoon", - "FASTSWAP": "Fastswap", + "FASTV1": "Fastswap v1", "FAT": "Fatcoin", "FATCAKE": "FatCake", "FATHER": "DogeFather", "FATHOM": "Fathom", + "FATMICHI": "FATMICHI", "FAV": "Football At AlphaVerse", "FAVR": "FAVOR", "FAYD": "Fayda", @@ -4195,6 +4485,7 @@ "FCK": "Find & Check", "FCL": "Fractal", "FCN": "FantomCoin", + "FCO": "Fanatico", "FCOIN": "FCoin", "FCON": "SpaceFalcon", "FCP": "FILIPCOIN", @@ -4216,6 +4507,7 @@ "FEED": "Feeder Finance", "FEENIXV2": "ProjectFeenixv2", "FEES": "UNIFEES", + "FEFE": "Fefe", "FEG": "FEG Token", "FEGV1": "FEG Token v1", "FEI": "Fei Protocol", @@ -4249,6 +4541,7 @@ "FGM": "Feels Good Man", "FGT": "Flozo Game Token", "FGZ": "Free Game Zone", + "FHB": "FHB", "FHM": "FantOHM", "FI": "Fideum", "FIA": "FIA Protocol", @@ -4259,6 +4552,7 @@ "FIDA": "Bonfida", "FIDLE": "Fidlecoin", "FIDO": "FIDO", + "FIDU": "Fidu", "FIELD": "Fieldcoin", "FIERO": "Fieres", "FIF": "flokiwifhat", @@ -4276,6 +4570,7 @@ "FIN": "DeFiner", "FINA": "Defina Finance", "FINALE": "Ben's Finale", + "FINB": "Finblox", "FINC": "Finceptor", "FIND": "FindCoin", "FINE": "Refinable", @@ -4284,9 +4579,11 @@ "FINN": "Huckleberry", "FINOM": "Finom FIN Token", "FINS": "AutoShark DEX", + "FINT": "FintraDao", "FINU": "Formula Inu", "FIO": "FIO Protocol", "FIRA": "Defira", + "FIRE": "Matr1x Fire", "FIRECOIN": "FireCoin", "FIRO": "Firo", "FIRSTHARE": "FirstHare", @@ -4306,13 +4603,17 @@ "FJO": "Fjord Foundry", "FJT": "Fuji FJT", "FK": "FK Coin", + "FKBIDEN": "Fkbiden", "FKGARY": "Fuck Gary Gensler", "FKPEPE": "Fuck Pepe", + "FKRPRO": "FlickerPro", + "FKSK": "Fatih Karagümrük SK", "FKX": "FortKnoxster", "FL": "Freeliquid", "FLAG": "Flag Network", "FLAME": "FireStarter", "FLAP": "Flappy Coin", + "FLAPPY": "Flappy", "FLAS": "Flas Exchange Token", "FLASH": "Flashstake", "FLASHC": "FLASH coin", @@ -4323,11 +4624,13 @@ "FLEPE": "Floki VS Pepe", "FLETA": "FLETA", "FLEX": "FLEX Coin", + "FLEXUSD": "flexUSD", "FLG": "Folgory Coin", "FLIBERO": "Fantom Libero Financial", "FLIC": "Skaflic", "FLIGHT": "FLIGHTCLUPCOIN", "FLIK": "FLiK", + "FLIKO": "Fliko Uni", "FLINU": "FLOKI INU", "FLIP": "Chainflip", "FLIX": "OmniFlix Network", @@ -4339,7 +4642,10 @@ "FLN": "Falcon", "FLO": "Flo", "FLOAT": "Float Protocol", + "FLOCHI": "Flochi", + "FLOCKA": "Waka Flocka", "FLOKA": "FLOKA", + "FLOKEI": "FLOKEI", "FLOKI": "Floki Inu", "FLOKIBURN": "FlokiBurn", "FLOKICASH": "Floki Cash", @@ -4382,6 +4688,7 @@ "FLYCOIN": "FlyCoin", "FLZ": "Fellaz", "FM": "Flowmatic", + "FMA": "FLAMA", "FMB": "FREEMOON BINANCE", "FMC": "Fimarkcoin", "FME": "FME", @@ -4399,6 +4706,7 @@ "FNF": "FunFi", "FNK": "FunKeyPay", "FNL": "Finlocale", + "FNLX": "Fignal X", "FNO": "Fonero", "FNP": "FlipNpik", "FNSA": "FINSCHIA", @@ -4463,15 +4771,18 @@ "FOXE": "Foxe", "FOXF": "Fox Finance", "FOXGIRL": "FoxGirl", + "FOXSY": "Foxsy AI", "FOXT": "Fox Trading", "FOXV2": "FoxFinanceV2", - "FOXY": "Famous Fox Federation", + "FOXY": "Foxy", "FP": "Fren Pet", "FPAD": "FantomPAD", "FPC": "Futurepia", + "FPEPE": "Based Father Pepe", "FPFT": "Peruvian National Football Team Fan Token", "FPI": "Frax Price Index", "FPIS": "Frax Price Index Share", + "FQS": "FQSwap V2", "FR": "Freedom Reserve", "FRA": "Findora", "FRAC": "FractalCoin", @@ -4485,13 +4796,17 @@ "FREC": "Freyrchain", "FRECNX": "FreldoCoinX", "FRED": "FREDEnergy", + "FREDDY": "FREDDY", "FREE": "FREE coin", "FREED": "FreedomCoin", + "FREEDO": "Freedom", "FREELA": "DecentralFree", "FREEROSS": "FreeRossDAO", "FREL": "Freela", "FREN": "FREN", + "FRENCH": "French On Base", "FRENS": "Farmer Friends", + "FRESCO": "Fresco", "FRF": "France REV Finance", "FRGST": "Froggies Token", "FRGX": "FRGX", @@ -4506,10 +4821,12 @@ "FRN": "Francs", "FRNT": "Final Frontier", "FROG": "FrogSwap", + "FROGB": "Frog Bsc", "FROGCEO": "Frog Ceo", "FROGE": "Froge Finance", "FROGEX": "FrogeX", "FROGGY": "Froggy", + "FROGLIC": "Pink Hood Froglicker", "FROGO": "Frogo", "FRONK": "Fronk", "FRONT": "Frontier", @@ -4535,6 +4852,7 @@ "FSHN": "Fashion Coin", "FSM": "Floki SafeMoon", "FSN": "Fusion", + "FSO": "FSociety", "FST": "Futureswap", "FSTC": "FastCoin", "FSW": "Falconswap", @@ -4582,9 +4900,11 @@ "FUNDX": "Funder One Capital", "FUNDYOUR": "FundYourselfNow", "FUNDZ": "FundFantasy", + "FUNG": "Fungify", "FUNGI": "Fungi", "FUNK": "Cypherfunks Coin", "FUR": "Furio", + "FURIE": "Matt Furie", "FURU": "Furucombo", "FURY": "Engines of Fury", "FURYX": "Metafury", @@ -4604,11 +4924,13 @@ "FWATCH": "Foliowatch", "FWB": "Friends With Benefits Pro", "FWC": "Qatar 2022", + "FWH": "FigureWifHat", "FWT": "Freeway Token", "FWW": "Farmers World Wood", "FX": "Function X", "FXB": "FxBox", "FXC": "Flexacoin", + "FXD": "Fathom Dollar", "FXDX": "FXDX", "FXF": "Finxflo", "FXI": "FX1 Sports", @@ -4626,6 +4948,7 @@ "G1X": "GoldFinX", "G3": "GAM3S.GG", "G50": "G50", + "G8C": "ONEG8.ONE", "G999": "G999", "GAC": "Green Art Coin", "GAD": "Green App Development", @@ -4637,6 +4960,7 @@ "GAIAPLATFORM": "GAIA Platform", "GAIN": "Gainfy", "GAINS": "Gains", + "GAINSV1": "Gains v1", "GAJ": "Gaj Finance", "GAKH": "GAKHcoin", "GAL": "Galxe", @@ -4644,6 +4968,7 @@ "GALATA": "Galatasaray Fan Token", "GALAV1": "Gala v1", "GALAX": "Galaxy Finance", + "GALAXIS": "Galaxis", "GALAXY": "GalaxyCoin", "GALEON": "Galeon", "GALI": "Galilel", @@ -4653,7 +4978,8 @@ "GAMB": "GAMB", "GAMBIT": "Gambit", "GAMBL": "Metagamble", - "GAME": "Gamestarter", + "GAME": "GameBuild", + "GAMEBUD": "GAMEBUD", "GAMEC": "Game", "GAMECRED": "GameCredits", "GAMEFI": "GameFi Token", @@ -4661,6 +4987,7 @@ "GAMEIN": "Game Infinity", "GAMER": "GameStation", "GAMERFI": "GamerFI", + "GAMES": "Gamestarter", "GAMESTARS": "Game Stars", "GAMEX": "GameX", "GAMI": "GAMI World", @@ -4689,6 +5016,7 @@ "GAT": "GATCOIN", "GATE": "GATENet", "GATEWAY": "Gateway Protocol", + "GATHER": "Gather", "GATSBY": "Gatsby Inu", "GAU": "Gamer Arena", "GAUSS": "Gauss0x", @@ -4712,6 +5040,7 @@ "GBPT": "poundtoken", "GBPU": "Upper Pound", "GBRC": "GBR Coin", + "GBSK": "Gençlerbirliği Fan Token", "GBT": "GameBetCoin", "GBTC": "GigTricks", "GBURN": "GBURN", @@ -4721,6 +5050,7 @@ "GC": "Gric Coin", "GCAKE": "Pancake Games", "GCAT": "Giga Cat on Base", + "GCB": "Global Commercial Business", "GCC": "GuccioneCoin", "GCME": "GoCryptoMe", "GCN": "gCn Coin", @@ -4756,16 +5086,19 @@ "GELO": "Grok Elo", "GEM": "Gemie", "GEMA": "Gemera", + "GEME": "GAMESTUMP", "GEMG": "GemGuardian", "GEMINI": "Gemini Ai", "GEMINIT": "Gemini", "GEMS": "Gems", + "GEMSTON": "GEMSTON", "GEMZ": "Gemz Social", "GEN": "DAOstack", "GENE": "Genopets", "GENESIS": "Genesis Worlds", "GENI": "Genius", "GENIE": "The Genie", + "GENIEC": "GenieCoin", "GENIX": "Genix", "GENO": "GenomeFi", "GENOME": "GenomesDao", @@ -4838,6 +5171,7 @@ "GHT": "Global Human Trust", "GHUB": "GemHUB", "GHX": "GamerCoin", + "GIA": "Gamia", "GIAC": "Gorilla In A Coupe", "GIB": "Bible Coin", "GIC": "Giant", @@ -4846,7 +5180,9 @@ "GIFT": "GiftNet", "GIG": "GigaCoin", "GIGA": "GigaSwap", + "GIGACHAD": "GigaChad", "GIGX": "GigXCoin", + "GIKO": "Giko Cat", "GIM": "Gimli", "GIMMER": "Gimmer", "GIN": "GINcoin", @@ -4857,18 +5193,21 @@ "GIO": "Graviocoin", "GIOT": "Giotto Coin", "GIOVE": "GIOVE", + "GIR": "Girlfriend", "GIV": "Giveth", "GIVE": "GiveCoin", "GIZ": "GIZMOcoin", "GJC": "Global Jobcoin", "GKF": "Galatic Kitty Fighters", "GKI": "GKi", + "GL": "Lemmings", "GLA": "Gladius", "GLAX": "BLOCK GALAXY NETWORK", "GLB": "Golden Ball", "GLC": "GoldCoin", "GLCH": "Glitch", "GLD": "Goldario", + "GLDGOV": "Gold DAO", "GLDR": "Golder Coin", "GLDS": "Gdigit", "GLDX": "Goldex", @@ -4904,7 +5243,11 @@ "GMC": "Gridmaster", "GMCN": "GambleCoin", "GMCOIN": "GMCoin", + "GMDP": "GMD Protocol", + "GME": "GameStop", "GMEE": "GAMEE", + "GMEPEPE": "GAMESTOP PEPE", + "GMETRUMP": "GME TRUMP", "GMEX": "Game Coin", "GMFAM": "GMFAM", "GMFI": "Golden Magfi", @@ -4969,6 +5312,7 @@ "GOLDCAT": "GOLD CAT", "GOLDEN": "Golden Inu", "GOLDENG": "Golden Goose", + "GOLDF": "Gold Fever", "GOLDMIN": "GoldMiner", "GOLDPIECES": "GoldPieces", "GOLDX": "eToro Gold", @@ -4980,6 +5324,7 @@ "GOM2": "GoMoney2", "GOMA": "GOMA Finance", "GOMD": "GOMDori", + "GOME": "Game of Memes", "GOMT": "GoMeat", "GONE": "GONE", "GOO": "Gooeys", @@ -5019,9 +5364,12 @@ "GPO": "GoldPesa Option", "GPPT": "Pluto Project Coin", "GPS": "Triffic", + "GPT": "QnA3.AI", + "GPT4O": "GPT-4o", "GPTG": "GPT Guru", "GPTPLUS": "GPTPlus", "GPTV": "GPTVerse", + "GPU": "Node AI", "GPUCOIN": "GPU Coin", "GPUINU": "GPU Inu", "GPX": "GPEX", @@ -5066,6 +5414,7 @@ "GRND": "SuperWalk", "GRO": "Gro DAO Token", "GROK": "Grok", + "GROK2": "GROK 2.0", "GROKBANK": "Grok Bank", "GROKBOY": "GrokBoy", "GROKCAT": "Grok Cat", @@ -5086,8 +5435,10 @@ "GROKXAI": "Grok X Ai", "GRON": "Gron Digital", "GROOOOOK": "Groooook", + "GROOVE": "GROOVE", "GROW": "GrownCoin", "GROWTH": "GROWTH DeFi", + "GROYPER": "Groyper", "GRP": "Grape", "GRPL": "Golden Ratio Per Liquidity", "GRS": "Groestlcoin", @@ -5109,9 +5460,11 @@ "GSM": "GSM Coin", "GSPI": "GSPI", "GSR": "GeyserCoin", + "GST": "CoinGhost", "GSTBSC": "Green Satoshi Token (BSC)", "GSTC": "GSTCOIN", "GSTETH": "Green Satoshi Token (ETH)", + "GSTOP": "GameStop", "GSTS": "Gunstar Metaverse", "GSTSOL": "Green Satoshi Token (SOL)", "GSTT": "GSTT", @@ -5121,6 +5474,7 @@ "GSY": "GenesysCoin", "GSYS": "Genesys", "GT": "Gatechain Token", + "GTA": "GTA Token", "GTA6": "GTA VI", "GTAI": "GT Protocol", "GTAVI": "GTAVI", @@ -5136,6 +5490,7 @@ "GTN": "GlitzKoin", "GTON": "GTON Capital", "GTR": "Gturbo", + "GTRUMP": "Giga Trump", "GTSE": "Global Tourism Sharing Ecology", "GTTM": "Going To The Moon", "GTX": "GALLACTIC", @@ -5155,9 +5510,11 @@ "GUM": "Gourmet Galaxy", "GUMMIES": "GUMMIES", "GUMMY": "GUMMY", + "GUMSHOOS": "GUMSHOOS TRUMP", "GUN": "GunCoin", "GUNS": "GeoFunders", "GUP": "Guppy", + "GURL": "Gently Used Girl", "GUSD": "Gemini Dollar", "GUSDT": "Global Utility Smart Digital Token", "GUT": "Genesis Universe", @@ -5180,7 +5537,9 @@ "GYM": "GYM Token", "GYMNET": "Gym Network", "GYMREW": "Gym Rewards", + "GYR": "Gyre Token", "GYRO": "Gyro", + "GYROS": "Gyroscope GYD", "GYSR": "GYSR", "GZB": "Gigzi", "GZE": "GazeCoin", @@ -5196,6 +5555,7 @@ "H4TOKEN": "Hold Ignore Fud", "HABIBI": "The Habibiz", "HAC": "Hackspace Capital", + "HACD": "Hacash Diamond", "HACHI": "Hachi", "HACHIKO": "Hachiko Inu Token", "HAHA": "Hasaki", @@ -5213,6 +5573,7 @@ "HALOPLATFORM": "Halo Platform", "HAM": "Hamster", "HAMI": "Hamachi Finance", + "HAMMY": "SAD HAMSTER", "HAMS": "HamsterCoin", "HAMSTR": "Hamster Coin", "HAN": "HanChain", @@ -5222,15 +5583,17 @@ "HANK": "Hank", "HANU": "Hanu Yokia", "HAO": "HistoryDAO", + "HAP": "Happy Train", "HAPI": "HAPI", "HARAM": "HARAM", - "HARAMBE": "Harambe", + "HARAMBE": "Harambe on Solana", "HARD": "Kava Lend", "HARE": "Hare Token", "HAREPLUS": "Hare Plus", "HAROLD": "Harold", "HARRYP": "HarryPotterObamaSonic10Inu (ERC20)", "HART": "HARA", + "HASBIK": "Hasbulla", "HASH": "Provenance Blockchain", "HASHAI": "HashAI", "HASHT": "HASH Token", @@ -5243,6 +5606,7 @@ "HAVOC": "Havoc", "HAVY": "Havy", "HAWK": "Hawksight", + "HAWKTUAH": "Hawk Tuah", "HAY": "Destablecoin HAY", "HAYYA": "GO HAYYA", "HAZ": "Hazza", @@ -5273,6 +5637,7 @@ "HDG": "Hedge Token", "HDN": "Hydranet", "HDRN": "Hedron", + "HDRO": "Hydro Protocol", "HDV": "Hydraverse", "HDX": "HydraDX", "HE": "Heroes & Empires", @@ -5303,6 +5668,7 @@ "HER": "Hero Node", "HERA": "Hero Arena", "HERB": "HerbCoin", + "HERBE": "Herbee", "HERMES": "Hermes Protocol", "HERO": "Metahero", "HEROES": "Dehero Community Token", @@ -5317,6 +5683,7 @@ "HFI": "Holder Finance", "HFIL": "Huobi Fil", "HFT": "Hashflow", + "HGEN": "HGEN DAO", "HGET": "Hedget", "HGHG": "HUGHUG Coin", "HGO": "HireGo", @@ -5347,6 +5714,7 @@ "HIFRIENDS": "hiFRIENDS", "HIGAZERS": "hiGAZERS", "HIGH": "Highstreet", + "HIGHER": "Higher", "HIH": "HiHealth", "HIKARI": "Hikari Protocol", "HILL": "President Clinton", @@ -5362,6 +5730,7 @@ "HINU": "HajiIni", "HIOD": "hiOD", "HIODBS": "hiODBS", + "HIP": "HIPPOP", "HIPENGUINS": "hiPENGUINS", "HIPP": "El Hippo", "HIPUNKS": "hiPUNKS", @@ -5387,6 +5756,7 @@ "HLC": "HalalChain", "HLD": "HyperLending", "HLDY": "HOLIDAY", + "HLG": "Holograph", "HLM": "Helium", "HLN": "Holonus", "HLP": "Purpose Coin", @@ -5428,6 +5798,7 @@ "HOCAI": "Heroes of Crypto AI", "HOD": "HoDooi.com", "HODL": "HOdlcoin", + "HOG": "Hog", "HOGE": "Hoge Finance", "HOHOHO": "Santa Floki v2.0", "HOICHI": "Hoichi", @@ -5447,6 +5818,7 @@ "HON": "SoulSociety", "HONEY": "Hivemapper", "HONEYCOIN": "Honey", + "HONG": "HongKongDAO", "HONK": "Honk", "HONOR": "HonorLand", "HOOF": "Metaderby Hoof", @@ -5493,7 +5865,10 @@ "HRDG": "HRDGCOIN", "HRM": "Honorarium", "HRO": "HEROIC.com", + "HRT": "HIRO", "HRTS": "YellowHeart Protocol", + "HRX": "HorusLayer", + "HSAI": "HealthSci.AI", "HSC": "HashCoin", "HSF": "Hillstone Finance", "HSN": "Hyper Speed Network", @@ -5527,6 +5902,7 @@ "HUGE": "BigCoin", "HUGO": "Hugo Inu", "HUH": "HUH Token", + "HUHCAT": "huhcat", "HUM": "Humanscape", "HUMAI": "Humanoid AI", "HUMP": "Hump", @@ -5571,6 +5947,7 @@ "HYGH": "HYGH", "HYN": "Hyperion", "HYP": "HyperStake", + "HYPC": "HyperCycle", "HYPE": "Hype", "HYPER": "HyperChainX", "HYPERAI": "HyperHash AI", @@ -5613,7 +5990,9 @@ "ICASH": "ICASH", "ICB": "IceBergCoin", "ICC": "Insta Cash Coin", - "ICE": "Decentral Games ICE", + "ICE": "Ice Open Network", + "ICELAND": "ICE LAND", + "ICETH": "Interest Compounding ETH Index", "ICG": "Invest Club Global", "ICH": "IdeaChain", "ICHI": "ICHI", @@ -5629,6 +6008,8 @@ "ICOO": "ICO OpenLedger", "ICOS": "ICOBox", "ICP": "Internet Computer", + "ICPX": "Icrypex token", + "ICS": " ICPSwap Token", "ICSA": "Icosa", "ICST": "ICST", "ICT": "Intrachain", @@ -5638,6 +6019,7 @@ "IDAP": "IDAP", "IDC": "IdealCoin", "IDEA": "Ideaology", + "IDEAL": "Ideal Opportunities", "IDEFI": "Inverse DeFi Index", "IDEX": "IDEX", "IDH": "IndaHash", @@ -5692,6 +6074,8 @@ "ILK": "Inlock", "ILT": "iOlite", "ILV": "Illuvium", + "IMARO": "IMARO", + "IMAYC": "IMAYC", "IMBTC": "The Tokenized Bitcoin", "IMC": "i Money Crypto", "IME": "Imperium Empires", @@ -5707,6 +6091,7 @@ "IMPACTXP": "ImpactXP", "IMPCH": "Impeach", "IMPCN": "Brain Space", + "IMPCOIN": "IMPERIUM", "IMPER": "Impermax", "IMPS": "Impulse Coin", "IMPT": "IMPT", @@ -5774,6 +6159,7 @@ "INSURC": "InsurChain Coin", "INT": "Internet Node token", "INTD": "INTDESTCOIN", + "INTE": "InteractWith", "INTELLIQUE": "KARASOU", "INTER": "Inter Milan Fan Token", "INTERN": "Interns", @@ -5783,6 +6169,7 @@ "INTRO": "1INTRO", "INTX": "Intexcoin", "INU": "INU Token", + "INUGA": "INUGAMI", "INUINU": "Inu Inu", "INUKO": "Inuko Finance", "INUS": "MultiPlanetary Inus", @@ -5798,9 +6185,10 @@ "INXM": "InMax", "INXT": "Internxt", "INXTOKEN": "INX Token", - "IO": "Ideal Opportunities", + "IO": "io.net", "IOC": "IOCoin", "IOEN": "Internet of Energy Network", + "IOETH": "ioETH", "IOEX": "ioeX", "IOI": "IOI Token", "ION": "Ionomy", @@ -5834,6 +6222,7 @@ "IQ": "IQ", "IQ50": "IQ50", "IQC": "IQ.cash", + "IQG": "IQ Global", "IQN": "IQeon", "IQQ": "Iqoniq", "IQT": "IQ Protocol", @@ -5843,7 +6232,8 @@ "IRIS": "IRIS Network", "IRISTOKEN": "Iris Ecosystem", "IRL": "IrishCoin", - "IRON": "Iron BSC", + "IRON": "Iron Fish", + "IRONBSC": "Iron BSC", "IRT": "Infinity Rocket", "IRYDE": "iRYDE COIN", "ISA": "Islander", @@ -5888,8 +6278,10 @@ "IUS": "Iustitia Coin", "IUSD": "Indigo Protocol - iUSD", "IUX": "GeniuX", + "IVANKA": "IVANKA TRUMP", "IVAR": "Ivar Coin", "IVC": "Investy Coin", + "IVEX": "IVEX Financial", "IVI": "IVIRSE", "IVIP": "iVipCoin", "IVN": "IVN Security", @@ -5897,6 +6289,7 @@ "IVY": "IvyKoin", "IVZ": "InvisibleCoin", "IW": "iWallet", + "IWFT": "İstanbul Wild Cats", "IWT": "IwToken", "IX": "X-Block", "IXC": "IXcoin", @@ -5945,6 +6338,7 @@ "JED": "JEDSTAR", "JEDALS": "Yoda Coin Swap", "JEET": "Jeet", + "JEETOLAX": "Jeetolax", "JEFE": "JEFE TOKEN", "JEFF": "Jeff in Space", "JEJUDOGE": "Jejudoge", @@ -5952,8 +6346,11 @@ "JELLY": "Jelly eSports", "JEM": "Jem", "JEN": "JEN COIN", + "JENNER": "Caitlyn Jenner", + "JENSEN": "Jensen Huang", "JERRY": "Jerry Inu", "JERRYINU": "JERRYINU", + "JES": "Jesus", "JESUS": "Jesus Coin", "JET": "Jet Protocol", "JETCOIN": "Jetcoin", @@ -5962,6 +6359,7 @@ "JEW": "Shekel", "JEWEL": "DeFi Kingdoms", "JEX": "JEX Token", + "JF": "Jswap.Finance", "JFI": "JackPool.finance", "JFIN": "JFIN Coin", "JFIVE": "Jonny Five", @@ -5970,6 +6368,7 @@ "JIAOZI": "Jiaozi", "JIB": "Jibbit", "JIF": "JiffyCoin", + "JIG": "Jigen", "JIM": "Jim", "JIND": "JINDO INU", "JINDOGE": "Jindoge", @@ -5978,6 +6377,7 @@ "JIZZ": "JizzRocket", "JIZZLORD": "JizzLord", "JIZZUS": "JIZZUS CHRIST", + "JJ": "JEJE", "JK": "JK Coin", "JKC": "JunkCoin", "JKL": "Jackal Protocol", @@ -5995,16 +6395,19 @@ "JNY": "JNY", "JOB": "Jobchain", "JOBS": "JobsCoin", + "JOC": "Speed Star JOC", "JOE": "JOE", "JOEBIDEN2024 ": "JOEBIDEN2024", "JOEY": "Joey Inu", "JOGECO": "Jogecodog", "JOHM": "Johm lemmon", + "JOHNNY": "Johnny The Bull", "JOINT": "Joint Ventures", "JOJO": "JOJO", "JOK": "JokInTheBox", "JOKER": "JOKER", "JOKERCOIN": "JokerCoin", + "JOL": "Jolofcoin", "JOLT": "Joltify", "JONES": "Jones DAO", "JOOPS": "JOOPS", @@ -6043,11 +6446,14 @@ "JUMBO": "Jumbo Exchange", "JUMP": "Jumpcoin", "JUN": "Jun \"M\" Coin", + "JUNGLE": "JUNGLEDOGE", "JUNKIE": "Junkie Cats", "JUNO": "JUNO", "JUP": "Jupiter", "JUPI": "Jupiter", + "JUPSOL": "Jupiter Staked SOL", "JUR": "Jur", + "JUSD": "JUSD Stable Token", "JUSDC": "Jones USDC", "JUSDT": "TON Bridged USDT", "JUSTICE": "AssangeDAO", @@ -6055,7 +6461,9 @@ "JVL": "Javelin", "JVY": "Javvy", "JW": "Jasan Wellness", + "JWIF": "Jerrywifhat", "JWL": "Jewels", + "JYC": "Joe-Yo Coin", "K21": "K21", "K2G": "Kasko2go", "KAAS": "KAASY.AI", @@ -6063,12 +6471,15 @@ "KABY": "Kaby Arena", "KAC": "KACO Finance", "KACY": "Kassandra", + "KAF": "KAIF Platform", "KAG": "Silver", "KAI": "KardiaChain", + "KAID": "KAIDEX", "KAIJU": "KAIJUNO8", "KAIKEN": "Kaiken Shiba", "KAINET": "KAINET", "KAKA": "KAKA NFT World", + "KAKAXA": "KAKAXA", "KAKI": "Doge KaKi", "KAL": "Kaleido", "KALA": "Kalata Protocol", @@ -6146,15 +6557,19 @@ "KEKE": "KEK", "KEKEC": "THE BALKAN DWARF", "KEL": "KelVPN", + "KELP": "KELP", + "KELPE": "Kelp Earned Points", "KELPIE": "Kelpie Inu", "KEMA": "Kemacoin", "KEN": "Kencoin", + "KENDU": "Kendu Inu", "KENKA": "KENKA METAVERSE", "KENNEL": "Kennel Locker", "KENSHI": "Kenshi", "KEP": "Kepler", "KEPT": "KeptChain", "KERMIT": "KermitTheCoin", + "KETAMINE": "Ketamine", "KETAN": "Ketan", "KEX": "Kira Network", "KEXCOIN": "KexCoin", @@ -6168,6 +6583,7 @@ "KFR": "KING FOREVER", "KFT": "Knit Finance", "KFX": "KnoxFS", + "KGB": "KGB protocol", "KGC": "Krypton Galaxy Coin", "KGO": "Kiwigo", "KGT": "Kaby Gaming Token", @@ -6181,6 +6597,7 @@ "KICKS": "GetKicks", "KIF": "KittenFinance", "KIKO": "KIKO", + "KILLA": "The Bitcoin Killa", "KILLER": "Fat Cat Killer", "KILLSOLANA": "KillSolana", "KILT": "KILT Protocol", @@ -6208,6 +6625,7 @@ "KINGU": "KINGU", "KINGWIF": "King WIF", "KINGY": "KINGYTON", + "KINIC": "Kinic", "KINT": "Kintsugi", "KINU": "Kragger Inu", "KIRA": "Kira the Injective Cat", @@ -6279,9 +6697,10 @@ "KODACHI": "Kodachi Token", "KOGE": "BNB48 Club Token", "KOGECOIN": "KogeCoin.io", - "KOI": "Koi Network", + "KOI": "Koi", "KOIN": "Koinos", "KOINB": "KoinBülteni Token", + "KOINETWORK": "Koi Network", "KOIP": "KoiPond", "KOJI": "Koji", "KOK": "KOK Coin", @@ -6299,6 +6718,7 @@ "KORE": "KORE Vault", "KOREC": "Kore", "KORRA": "KORRA", + "KOSS": "Koss", "KOTO": "Koto", "KOY": "Koyo", "KOZ": "Kozjin", @@ -6329,21 +6749,23 @@ "KRONE": "Kronecoin", "KRP": "Kryptoin", "KRRX": "Kyrrex", + "KRS": "Kingdom Raids", "KRT": "TerraKRW", "KRU": "Kingaru", "KRUGERCOIN": "KrugerCoin", "KRX": "RAVN Korrax", + "KRY": "Krypdraw", "KS2": "Kingdomswap", "KSC": "KStarCoin", "KSH": "Kahsh", "KSHIB": "Kilo Shiba Inu", - "KSK.BITCI": "Karsiyaka Taraftar Token", + "KSK": "Karsiyaka Taraftar Token", "KSM": "Kusama", "KSN": "KISSAN", "KSP": "KlaySwap Protocol", "KSS": "Krosscoin", "KST": "StarKST", - "KSTT.BITCI": "Kocaelispor Fan Token", + "KSTT": "Kocaelispor Fan Token", "KSWAP": "KyotoSwap", "KSYS": "K-Systems", "KT": "Kuai Token", @@ -6412,6 +6834,7 @@ "LABZ": "Insane Labz", "LACCOIN": "LocalAgro", "LACE": "Lovelace World", + "LAD": "LADA", "LADA": "LadderCaster", "LADYF": "Milady Wif Hat", "LADYS": "Milady Meme Coin", @@ -6419,10 +6842,12 @@ "LAELAPS": "Laelaps", "LAI": "LayerAI", "LAIKA": "Laika Protocol", + "LAINESOL": "Laine Staked SOL", "LAKE": "Data Lake", "LALA": "LaLa World", "LAMB": "Lambda", "LAMBO": "LAMBO", + "LAN": "Lanify", "LANA": "LanaCoin", "LANC": "Lanceria", "LAND": "Landshare", @@ -6430,17 +6855,22 @@ "LANDS": "Two Lands", "LANDV1": "Landshare v1", "LANDWOLF": "LANDWOLF", + "LANDWU": "LandWu", "LANE": "LaneAxis", "LAO": "LC Token", + "LAPI": "Lapis Inu", "LAPTOP": "Hunter Biden's Laptop", "LAR": "LinkArt", "LARIX": "Larix", "LARO": "Anito Legends", + "LARR": "larrywifhat", "LARRY": "LarryCoin", "LAS": "LNAsolution Coin", "LAT": "PlatON Network", + "LATOM": "Liquid ATOM", "LATTE": "LatteSwap", "LATX": "Latium", + "LAUGHCOIN": "Laughcoin", "LAUNCH": "Launchblock.com", "LAVA": "Lavaswap", "LAVAX": "LavaX Labs", @@ -6451,6 +6881,7 @@ "LAYER": "UniLayer", "LAZ": "Lazarus", "LAZIO": "Lazio Fan Token", + "LB": "LoveBit", "LBA": "Cred", "LBC": "LBRY Credits", "LBK": "LBK", @@ -6478,6 +6909,7 @@ "LCT": "LendConnect", "LCWP": "LiteCoinW Plus", "LCX": "LCX", + "LD": "Long Dragon", "LDC": "LeadCoin", "LDFI": "LenDeFi Token", "LDM": "Ludum token", @@ -6530,6 +6962,7 @@ "LEVE": "Leve Invest", "LEVELG": "LEVELG", "LEVER": "LeverFi", + "LEVERA": "LeverageInu", "LEVERJ": "Leverj", "LEVL": "Levolution", "LEX": "Elxis", @@ -6539,6 +6972,7 @@ "LF": "Linkflow", "LFC": "BigLifeCoin", "LFG": "Gamerse", + "LFGO": "Lets Fuckin Go", "LFI": "LunaFi", "LFNTY": "Lifinity", "LFT": "Lend Flare Dao", @@ -6561,8 +6995,10 @@ "LIB": "Libellum", "LIBERA": "Libera Financial", "LIBERO": "Libero Financial", + "LIBERTA": "The Libertarian Dog", "LIBFX": "Libfx", - "LIBRA": "Libra Protocol", + "LIBRA": "0L Network", + "LIBRAP": "Libra Protocol", "LIBRE": "Libre", "LIC": "Ligercoin", "LICK": "PetLFG", @@ -6584,6 +7020,7 @@ "LIKEC": "LikeCoin", "LILA": "LiquidLayer", "LILFLOKI": "Lil Floki", + "LILPUMP": "lilpump", "LIME": "iMe Lab", "LIMEX": "Limestone Network", "LIMO": "Limoverse", @@ -6613,6 +7050,7 @@ "LIS": "Realis Network", "LISA": "Lisa Simpson", "LIST": "KList Protocol", + "LISTA": "Lista DAO", "LIT": "Litentry", "LITE": "Lite USD", "LITENETT": "Litenett", @@ -6633,6 +7071,7 @@ "LK7": "Lucky7Coin", "LKC": "LuckyCoin", "LKD": "LinkDao", + "LKI": "Laika AI", "LKN": "LinkCoin Token", "LKSM": "Liquid KSM", "LKT": "Locklet", @@ -6664,6 +7103,7 @@ "LNK": "Ethereum.Link", "LNKC": "Linker Coin", "LNL": "LunarLink", + "LNQ": "LinqAI", "LNR": "Lunar", "LNT": "Lottonation", "LNX": "Lunox Token", @@ -6673,17 +7113,20 @@ "LOBO": "LOBO•THE•WOLF•PUP", "LOBS": "Lobstex", "LOC": "LockTrip", + "LOCAT": "LOVE CAT", "LOCC": "Low Orbit Crypto Cannon", "LOCG": "LOCGame", "LOCI": "LociCoin", "LOCK": "Contracto", "LOCO": "Loco", + "LOCOM": "Locomotir", "LOCUS": "Locus Chain", "LODE": "Lodestar", "LOE": "Legends of Elysium", "LOF": "Land of Fantasy", "LOFI": "LOFI", "LOG": "Wood Coin", + "LOGO": "LOGOS", "LOIS": "Lois Token", "LOKA": "League of Kingdoms", "LOKR": "Polkalokr", @@ -6693,9 +7136,11 @@ "LON": "Tokenlon", "LONG": "Longdrink Finance", "LONGFU": "LONGFU", + "LONGSHINE": "LongShine", "LOOK": "LookCoin", "LOOKS": "LooksRare", "LOOM": "Loom Network", + "LOOMV1": "Loom Network v1", "LOON": "Loon Network", "LOONG": "PlumpyDragons", "LOOP": "LOOP", @@ -6708,17 +7153,20 @@ "LORDZ": "Meme Lordz", "LORGY": "Memeolorgy", "LORY": "Yield Parrot", + "LOS": "Lord Of SOL", "LOST": "Lost Worlds", "LOT": "Lukki Operating Token", "LOTES": "Loteo", "LOTEU": "Loteo", + "LOTT": "Beauty bakery lott", "LOTTO": "LottoCoin", "LOTTY": "Lotty", "LOTUS": "The White Lotus", "LOUD": "Loud Market", "LOV": "LoveChain", "LOVE": "Deesse", - "LOVELY": "Lovely Inu finance", + "LOVELY": "Lovely finance", + "LOVELYV1": "Lovely Inu Finance", "LOVESNOOPY": "I LOVE SNOOPY", "LOWB": "Loser Coin", "LOWQ": "lowq frends", @@ -6759,6 +7207,7 @@ "LSS": "Lossless", "LST": "Lendroid Support Token", "LSTAR": "Learning Star", + "LSTV1": "Lovely Swap Token", "LSV": "Litecoin SV", "LSWAP": "LoopSwap", "LT": "Loctite Assets Token", @@ -6802,6 +7251,7 @@ "LUCK": "Lucky Cat", "LUCKY": "Lucky Lion", "LUCKYB": "LuckyBlocks", + "LUCKYS": "LuckyStar", "LUCKYSLP": "LuckysLeprecoin", "LUCY": "Lucy", "LUDO": "Ludo", @@ -6834,6 +7284,7 @@ "LUTETIUM": "Lutetium Coin", "LUX": "LUXCoin", "LUXO": "Luxo", + "LUXU": "Luxury Travel Token", "LUXY": "Luxy", "LVG": "Leverage Coin", "LVIP": "Limitless VIP", @@ -6860,6 +7311,7 @@ "LYNX": "Lynx", "LYO": "LYO Credit", "LYQD": "eLYQD", + "LYR": "Lyra", "LYRA": "Lyra", "LYTX": "LYTIX", "LYUM": "Layerium", @@ -6873,8 +7325,11 @@ "M1": "SupplyShock", "M2O": "M2O Token", "M87": "MESSIER", + "MAAL": "Maal Chain", "MABA": "Make America Based Again", "MAC": "MachineCoin", + "MACHO": "macho", + "MADA": "MilkADA", "MADANA": "MADANA", "MADC": "MadCoin", "MADOG": "MarvelDoge", @@ -6882,9 +7337,15 @@ "MAEP": "Maester Protocol", "MAF": "MetaMAFIA", "MAG": "Magnet", - "MAGA": "TRUMP", + "MAGA": "MAGA Hat", + "MAGA2024": "MAGA2024", + "MAGAA": "MAGA AGAIN", "MAGACAT": "MAGACAT", + "MAGADOGE": "MAGA DOGE", "MAGAIBA": "Magaiba", + "MAGANOMICS": "Maganomics", + "MAGAPEPE": "MAGA PEPE", + "MAGASHIB": "MAGA SHIB", "MAGATRUMP": "MAGA Trump", "MAGE": "MetaBrands", "MAGIC": "Magic", @@ -6898,23 +7359,31 @@ "MAIA": "Maia", "MAID": "MaidSafe Coin", "MAIL": "CHAINMAIL", + "MAINSTON": "Ston", "MAJO": "Majo", "MAKE": "MAKE", "MAKI": "MakiSwap", + "MALGO": "milkALGO", "MALL": "Metamall", "MALLY": "Malamute Finance", "MAMAI": "MammothAI", + "MAMBA": "Mamba", "MAN": "Matrix AI Network", "MANA": "Decentraland", "MANC": "Mancium", "MANDALA": "Mandala Exchange Token", "MANDOX": "MandoX", "MANE": "MANE", + "MANEKI": "MANEKI", "MANGA": "Manga Token", "MANIA": "ScapesMania", "MANNA": "Manna", + "MANORUKA": "ManoRuka", + "MANT": "Mantle USD", "MANTA": "Manta Network", "MANTLE": "Mantle", + "MANYU": "Little Manyu", + "MAO": "Mao", "MAP": "MAP Protocol", "MAPC": "MapCoin", "MAPE": "Mecha Morphing", @@ -6926,8 +7395,10 @@ "MARGA": "Margaritis", "MARGINLESS": "Marginless", "MARI": "MarijuanaCoin", + "MARIC": "Maricoin", "MARIO": "MARIO CEO", "MARK": "Benchmark Protocol", + "MARKE": "Market Ledger", "MARLEY": "Marley Token", "MARMAJ": "marmaj", "MARO": "Maro", @@ -6937,11 +7408,15 @@ "MARSH": "Unmarshal", "MARSRISE": "MarsRise", "MARSUPILAMI": "MARSUPILAMI INU", + "MARSW": "Marswap", "MART": "Monart", + "MARTIA": "Colonize Mars", "MARTK": "Martkist", + "MARTY": "Marty Inu", "MARU": "marumaruNFT", "MARV": "Marvelous", "MARVIN": "Marvin", + "MARVINB": "Marvin on Base", "MARX": "MarX", "MARXCOIN": "MarxCoin", "MARYJ": "MaryJane Coin", @@ -6965,12 +7440,15 @@ "MATIC": "Polygon", "MATICX": "Stader MaticX", "MATPAD": "MaticPad", + "MATRIX": "Matrix Labs", "MAU": "MAU", + "MAUW": "MAUW", "MAV": "Maverick Protocol", "MAVIA": "Heroes of Mavia", "MAW": "Mountain Sea World", "MAX": "MaxCoin", "MAXI": "Maximus", + "MAXL": "Maxi protocol", "MAXR": "Max Revive", "MAXX": "MAXX Finance", "MAY": "Theresa May Coin", @@ -6984,6 +7462,7 @@ "MB8": "MB8 Coin", "MBAPEPE": "MBAPEPE", "MBASE": "Minebase", + "MBC": "MicroBitcoin", "MBCASH": "MBCash", "MBCC": "Blockchain-Based Distributed Super Computing Platform", "MBD": "MBD Financials", @@ -7000,11 +7479,11 @@ "MBONK": "megaBonk", "MBOT": "MoonBot", "MBOX": "MOBOX", + "MBOYS": "MoonBoys", "MBP": "MobiPad", "MBRS": "Embers", "MBS": "MonkeyBall", "MBT": "Metablackout", - "MBTC": "MicroBitcoin", "MBTX": "MinedBlock", "MBX": "Marblex", "MC": "Merit Circle", @@ -7025,10 +7504,12 @@ "MCHC": "My Crypto Heroes", "MCI": "Musiconomi", "MCIV": "Mars Civ Project", + "MCL": "McLaren F1", "MCLB": "Millennium Club Coin", "MCN": "mCoin", "MCO": "Crypto.com", "MCO2": "Moss Carbon Credit", + "MCOIN": "MCOIN", "MCONTENT": "MContent", "MCP": "My Crypto Play", "MCPC": "Mobile Crypto Pay Coin", @@ -7070,6 +7551,7 @@ "MECHA": "Mechanium", "MECI": "Meta Game City", "MED": "Medibloc", + "MEDAMON": "Medamon", "MEDI": "MediBond", "MEDIA": "Media Network", "MEDIC": "MedicCoin", @@ -7087,14 +7569,17 @@ "MEGAHERO": "MEGAHERO", "MEGALAND": "Metagalaxy Land", "MEGALANDV1": "Metagalaxy Land v1", + "MEGE": "MEGE", "MEH": "meh", "MEL": "MELX", "MELANIA": "Melania Trump", "MELB": "Minelab", - "MELD": "Melodity", + "MELD": "MELD", "MELI": "Meli Games", "MELLO": "Mello Token", + "MELLSTROY": "MELLSTROY", "MELO": "Melo Token", + "MELODITY": "Melodity", "MELON": "cocomELON", "MELOS": "Melos Studio", "MELT": "Defrost Finance", @@ -7103,6 +7588,7 @@ "MEMD": "MemeDAO", "MEME": "Memecoin", "MEMEAI": "Meme Ai", + "MEMECUP": "Meme Cup", "MEMEETF": "Meme ETF", "MEMEFI": "MemeFi", "MEMEINU": "Meme Inu", @@ -7120,6 +7606,8 @@ "MEOW": "Zero Tech", "MEOWG": "MeowGangs", "MEOWIF": "Meowifhat", + "MEOWM": "Meow Meow Coin", + "MEOWME": "MEOW MEOW", "MEPAD": "MemePad", "MER": "Mercurial Finance", "MERCE": "MetaMerce", @@ -7136,6 +7624,7 @@ "MESG": "MESG", "MESH": "MeshBox", "MESSI": "MESSI COIN", + "MESSU": "Loinel Messu", "MET": "Metronome", "META": "Metadium", "METABOT": "Robot Warriors", @@ -7160,6 +7649,7 @@ "METAUFO": "MetaUFO", "METAV": "MetaVPad", "METAVIE": "Metavie", + "METAW": "MetaWorth", "METAX": "MetaverseX", "METEOR": "Meteorite Network", "METER": "Meter Stable", @@ -7175,6 +7665,7 @@ "MEV": "MEVerse", "MEVR": "Metaverse VR", "MEW": "cat in a dogs world", + "MEWC": "Meowcoin", "MEWING": "MEWING", "MEWSWIFHAT": "cats wif hats in a dogs world", "MEWTWO": "Mewtwo Inu", @@ -7250,6 +7741,7 @@ "MILK2": "Spaceswap MILK2", "MILKYWAY": "MilkyWayZone", "MILLI": "Million", + "MILLY": "milly", "MILO": "Milo Inu", "MILOCEO": "Milo CEO", "MILOCOIN": "MiloCoin", @@ -7270,6 +7762,7 @@ "MINE": "SpaceMine", "MINER": "MINER", "MINERALS": "Minerals Coin", + "MINES": "MINESHIELD", "MINETTE": "Vibe Cat", "MINEX": "Minex", "MINI": "Mini", @@ -7293,6 +7786,7 @@ "MIODIO": "MIODIOCOIN", "MIOTA": "IOTA", "MIR": "Mirror Protocol", + "MIRA": "Chains of War", "MIRACLE": "MIRACLE", "MIRC": "MIR COIN", "MIS": "Mithril Share", @@ -7306,12 +7800,15 @@ "MITC": "MusicLife", "MITH": "Mithril", "MITHRIL": "CLIMBERS", + "MITTENS": "Mittens", "MITX": "Morpheus Infrastructure Token", "MIV": "MakeItViral", "MIVA": "Minerva Wallet", "MIVRS": "Minionverse", "MIX": "MIXMARVEL", + "MIXAI": "Mixcash AI", "MIXCOIN": "Mixaverse", + "MIXER": "TON Mixer", "MIY": "Icel Idman Yurdu Token", "MJT": "MojitoSwap", "MK": "Meme Kombat", @@ -7321,7 +7818,7 @@ "MKR": "Maker", "MKT": "MikeToken", "MKUSD": "Prisma mkUSD", - "ML": "Market Ledger", + "ML": "Mintlayer", "MLA": "Moola", "MLD": "MonoLend", "MLGC": "Marshal Lion Group Coin", @@ -7344,6 +7841,7 @@ "MMETA": "Duckie Land Multi Metaverse", "MMF": "MMFinance", "MMG": "Monopoly Millionaire Game", + "MMIP": "Memes Make It Possible", "MMIT": "MangoMan Intelligent", "MMNXT": "MMNXT", "MMO": "MMOCoin", @@ -7381,6 +7879,7 @@ "MNTA": "MantaDAO", "MNTC": "Manet Coin", "MNTG": "Monetas", + "MNTIS": "Mantis", "MNTL": "AssetMantle", "MNTO": "Minato", "MNTP": "GoldMint", @@ -7410,18 +7909,23 @@ "MODA": "MODA DAO", "MODAI": "Modai", "MODC": "Modclub", + "MODE": "Mode", "MODEL": "Model Labs", "MODEX": "Modex", + "MODU": "Modular Wallet", "MODUM": "Modum", "MODX": "MODEL-X-coin", "MOE": "Merchant Moe", "MOETA": "Moeta", + "MOEW": "donotfomoew", "MOF": "Molecular Future (TRC20)", "MOFI": "MobiFi", "MOFOLD": "Molecular Future (ERC20)", "MOG": "Mog Coin", + "MOGE": "Moge", "MOGGO": "MOGGO", "MOGU": "Mogu", + "MOGUL": "Mogul Productions", "MOGX": "Mogu", "MOH": "Medal of Honour", "MOI": "MyOwnItem", @@ -7431,16 +7935,21 @@ "MOL": "Molecule", "MOLA": "MoonLana", "MOLK": "Mobilink Token", + "MOLLARS": "MollarsToken", "MOLLY": "Molly", "MOM": "Mother of Memes", "MOMA": "Mochi Market", - "MON": "Medamon", + "MOMIJI": "MAGA Momiji", + "MOMO": "MOMO 2.0", + "MON": "MON Protocol", "MONA": "MonaCoin", "MONAIZE": "Monaize", "MONARCH": "TRUEMONARCH", "MONAV": "Monavale", + "MONB": "MonbaseCoin", "MONETA": "Moneta", "MONEY": "MoneyCoin", + "MONEYBEE": "MONEYBEE", "MONEYBYTE": "MoneyByte", "MONEYIMT": "MoneyToken", "MONF": "Monfter", @@ -7451,6 +7960,7 @@ "MONI": "Monsta Infinite", "MONIE": "Infiblue World", "MONK": "Monkey Project", + "MONKAS": "Monkas", "MONKE": "Monkecoin", "MONKEY": "Monkey", "MONKEYS": "Monkeys Token", @@ -7463,7 +7973,9 @@ "MONT": "Monarch Token", "MONTE": "Monte", "MOO": "MooMonster", + "MOOCAT": "MooCat", "MOOI": "Moonai", + "MOOLA": "Degen Forest", "MOOLYA": "moolyacoin", "MOON": "r/CryptoCurrency Moons", "MOONARCH": "Moonarch", @@ -7484,6 +7996,7 @@ "MOOV": "dotmoovs", "MOOX": "Moox Protocol", "MOPS": "Mops", + "MOR": "Morpheus", "MORA": "Meliora", "MORE": "More Coin", "MORFEY": "Morfey", @@ -7492,9 +8005,11 @@ "MORRA": "Morra", "MORSE": "Morse", "MOS": "MOS Coin", + "MOST": "MOST Global", "MOT": "Olympus Labs", "MOTA": "MotaCoin", "MOTG": "MetaOctagon", + "MOTHER": "Mother Iggy", "MOTI": "Motion", "MOTO": "Motocoin", "MOUTAI": "Moutai", @@ -7511,12 +8026,14 @@ "MOZ": "Mozik", "MP": "Membership Placeholders", "MP3": "MP3", + "MPAD": "MultiPad", "MPAY": "Menapay", "MPC": "Metaplace", "MPD": "Metapad", "MPG": "Max Property Group", "MPH": "Morpher", "MPI": "MetaPioneers", + "MPIX": "Megapix", "MPL": "Maple", "MPLUS": "M+Plus", "MPLX": "Metaplex", @@ -7530,6 +8047,7 @@ "MQL": "MiraQle", "MQST": "MonsterQuest", "MR": "Meta Ruffy", + "MRBASED": "MrBased", "MRBOB": "MR BOB COIN", "MRCH": "MerchDAO", "MRCR": "Mercor Finance", @@ -7548,7 +8066,8 @@ "MRUN": "Metarun", "MRV": "Macroverse", "MRX": "Metrix Coin", - "MRXB": "Wrapped Metrix", + "MRXB": "Wrapped BNB Metrix", + "MRXE": "Wrapped ETH Metrix", "MRY": "MurrayCoin", "MSA": "My Shiba Academia", "MSB": "Misbloc", @@ -7584,10 +8103,12 @@ "MTD": "Minted", "MTEL": "MEDoctor", "MTG": "MagnetGold", + "MTGT": "MTG Token", "MTGX": "Montage Token", "MTH": "Monetha", "MTHD": "Method Finance", "MTHN": "MTH Network", + "MTIK": "MatikaToken", "MTIX": "Matrix Token", "MTK": "Moya Token", "MTL": "Metal", @@ -7600,6 +8121,7 @@ "MTRA": "MetaRare", "MTRC": "ModulTrade", "MTRG": "Meter", + "MTRK": "Matrak Fan Token", "MTRM": "Materium", "MTRX": "Metarix", "MTS": "Metastrike", @@ -7616,6 +8138,7 @@ "MTZ": "Monetizr", "MU": "Miracle Universe", "MUBI": "Multibit", + "MUC": "Multi Universe Central", "MUDOL2": "Hero Blaze: Three Kingdoms", "MUDRA": "MudraCoin", "MUE": "MonetaryUnit", @@ -7626,10 +8149,12 @@ "MUMU": "Mumu", "MUN": "MUNcoin", "MUNCH": "Munch Token", + "MUNCHY": "Boys Club Munchy", "MUNITY": "Metahorse Unity", "MUNK": "Dramatic Chipmunk", "MURA": "Murasaki", "MURATIAI": "MuratiAI", + "MUSCAT": "MusCat", "MUSD": "mStable USD", "MUSDCOIN": "MUSDcoin", "MUSE": "Muse DAO", @@ -7644,6 +8169,7 @@ "MUT": "Mutual Coin", "MUTE": "Mute", "MUU": "MilkCoin", + "MUZKI": "Muzki", "MUZZ": "MuzzleToken", "MV": "GensoKishi Metaverse", "MVC": "MileVerse", @@ -7657,6 +8183,7 @@ "MVP": "MAGA VP", "MVPC": "MVP Coin", "MVRS": "Meta MVRS", + "MVS": "Multiverse", "MVU": "meVu", "MVX": "Metavault Trade", "MW": "MasterWin Coin", @@ -7667,6 +8194,7 @@ "MWCC": "Metaworld", "MX": "MX Token", "MXC": "Machine Xchange Coin", + "MXGP": "MXGP Fan Token", "MXM": "Maximine", "MXNT": "Tether MXNt", "MXRP": "Monsta XRP", @@ -7714,6 +8242,7 @@ "NADA": "NADA Protocol Token", "NAFT": "Nafter", "NAH": "Strayacoin", + "NAI": "Nuklai", "NAKA": "Nakamoto Games", "NALA": "Not a lion, a...", "NALS": "NALS (Ordinals)", @@ -7731,6 +8260,7 @@ "NAOS": "NAOS Finance", "NAP": "Napoli Fan Token", "NARCO": "Mr. Narco", + "NARS": "Num ARS v2", "NAS": "Nebulas", "NAS2": "Nas2Coin", "NASADOGE": "Nasa Doge", @@ -7739,6 +8269,7 @@ "NASTR": "Liquid ASTR", "NAT": "Natmin", "NATION": "Nation3", + "NATIX": "NATIX Network", "NAUSICAA": "Nausicaa-Inu", "NAUT": "Nautilus Coin", "NAV": "NavCoin", @@ -7750,6 +8281,7 @@ "NAVY": "BoatPilot Token", "NAWA": "Narwhale.finance", "NAX": "NextDAO", + "NAZ": "NAZDAQ", "NAZA": "NAZA", "NAZAR": "NAZAR PROTOCOL", "NBABSC": "NBA BSC", @@ -7767,8 +8299,11 @@ "NBR": "Niobio Cash", "NBS": "New BitShares", "NBT": "NanoByte", + "NBXC": "Nibble", "NC": "Nayuta Coin", + "NCA": "NeuroCrypto Ads", "NCASH": "Nucleus Vision", + "NCAT": "Neuracat", "NCC": "NeuroChain", "NCDT": "Nuco.Cloud", "NCO": "Nexacore", @@ -7781,6 +8316,7 @@ "NCT": "PolySwarm", "ND": "Nemesis Downfall", "NDAU": "ndau", + "NDB": "NDB", "NDC": "NeverDie", "NDLC": "NeedleCoin", "NDN": "NDN Link", @@ -7791,6 +8327,7 @@ "NEADRAM": "The Ennead", "NEAL": "Coineal Token", "NEAR": "Near", + "NEARX": "Stader NearX", "NEAT": "NEAT", "NEBL": "Neblio", "NEBU": "Nebuchadnezzar", @@ -7826,17 +8363,22 @@ "NESS": "Ness LAB", "NEST": "Nest Protocol", "NESTREE": "Nestree", + "NESTV1": "Nest Protocol v1", "NET": "NetCoin", + "NETA": "Negative Tax", "NETC": "NetworkCoin", "NETCOIN": "Netcoincapital", "NETKO": "Netko", + "NETRUM": "Netrum", "NETT": "Netswap", + "NETVR": "Netvrk", "NETZ": "MainnetZ", "NETZ1": "NETZERO", "NEU": "Neumark", "NEURA": "Neurahub", "NEURAL": "NeuralAI", "NEURALINK": "Neuralink", + "NEURON": "Cerebrum DAO", "NEURONI": "Neuroni AI", "NEUROS": "Shockwaves", "NEUTR": "Neutrinos", @@ -7850,10 +8392,12 @@ "NEWM": "NEWM", "NEWO": "New Order", "NEWOS": "NewsToken", - "NEWS": "NewsTokens", + "NEWS": "PUBLISH", + "NEWSTOKENS": "NewsTokens", "NEWTON": "Newtonium", "NEX": "Nash Exchange", "NEXA": "Nexa", + "NEXAI": "NexAI", "NEXBOX": "NexBox", "NEXBT": "Native XBTPro Exchange Token", "NEXM": "Nexum", @@ -7881,6 +8425,7 @@ "NFTI": "NFT Index", "NFTL": "NFTLaunch", "NFTLOOT": "NFTLootBox", + "NFTM": "NFTMart Token", "NFTN": "NFTNetwork", "NFTP": "NFT", "NFTS": "NFT STARS", @@ -7895,7 +8440,7 @@ "NGA": "NGA Tiger", "NGC": "NagaCoin", "NGIN": "Ngin", - "NGL": "Gold Fever", + "NGL": "Entangle", "NGM": "e-Money", "NGMI": "NGMI Coin", "NHCT": "Nano Healthcare Token", @@ -7909,6 +8454,9 @@ "NIF": "Unifty", "NIFT": "Niftify", "NIFTSY": "Envelop", + "NIGELLA": "Nigella coin", + "NIGHT": "Midnight", + "NIGI": "Nigi", "NIHAO": "NiHao", "NII": "nahmii", "NIIFI": "NiiFi", @@ -7939,10 +8487,12 @@ "NKCLC": "NKCL Classic", "NKN": "NKN", "NKT": "NakomotoDark", + "NKYC": "NKYC Token", "NLC": "NoLimitCoin", "NLC2": "NoLimitCoin", "NLG": "Gulden", "NLINK": "Neuralink", + "NLK": "NuLink", "NLS": "Nolus", "NLX": "Nullex", "NMB": "Nimbus Coin", @@ -7955,7 +8505,7 @@ "NMR": "Numeraire", "NMS": "Numus", "NMSP": "Nemesis PRO", - "NMT": "NFTMart Token", + "NMT": "NetMind Token", "NMX": "Nominex Token", "NNB": "NNB Token", "NNC": "NEO Name Credit", @@ -7970,6 +8520,8 @@ "NODE": "Whole Network", "NODIS": "Nodis", "NODL": "Nodle Network", + "NOGS": "Noggles", + "NOHAT": "DogWifNoHat", "NOIA": "Syntropy", "NOIS": "Nois Network", "NOIZ": "NOIZ", @@ -7984,11 +8536,14 @@ "NORA": "SnowCrash Token", "NORD": "Nord Finance", "NORMIE": "Normie", + "NORMUS": "NORMUS", "NOS": "Nosana", "NOSN": "nOS", "NOSO": "Noso", + "NOT": "Notcoin", "NOTE": "Notional Finance", "NOTHING": "NOTHING", + "NOTINU": "NOTCOIN INU", "NOV": "Novara Calcio Fan Token", "NOVA": "Nova Finance", "NOW": "NOW Token", @@ -8001,10 +8556,11 @@ "NPLC": "Plus Coin", "NPM": "Neptune Mutual", "NPT": "Neopin", + "NPTX": "NeptuneX", "NPX": "Napoleon X", "NPXS": "Pundi X", "NPXSXEM": "Pundi X NEM", - "NR1.BITCI": "Number 1 Token", + "NR1": "Number 1 Token", "NRB": "NoirBits", "NRC": "Neurocoin", "NRCH": "EnreachDAO", @@ -8028,6 +8584,7 @@ "NSFW": "xxxNifty", "NSH": "NOSHIT", "NSI": "nSights DeFi Trader", + "NSIMPSON": "NeuraSimpson", "NSK": "NSKSwap", "NSO": "NeverSurrenderOne's", "NSP": "NOMAD.space", @@ -8087,6 +8644,7 @@ "NVZN": "INVIZION", "NWC": "Newscrypto Coin", "NWCN": "NowCoin", + "NWG": "NotWifGary", "NWP": "NWPSolution", "NWS": "Nodewaves", "NXC": "Nexium", @@ -8096,6 +8654,7 @@ "NXM": "Nexus Mutual", "NXMC": "NextMindCoin", "NXN": "Naxion", + "NXQ": "NexQloud", "NXRA": "AllianceBlock Nexera", "NXS": "Nexus", "NXT": "Nxt", @@ -8103,6 +8662,7 @@ "NXTT": "Next Earth", "NXTTY": "NXTTY", "NYAN": "NyanCoin", + "NYANDOGE": "NyanDOGE International", "NYANTE": "Nyantereum International", "NYBBLE": "Nybble", "NYC": "NewYorkCoin", @@ -8112,6 +8672,7 @@ "NYM": "Nym Token", "NYN": "NYNJA", "NYX": "NYXCOIN", + "NYXC": "Nyxia AI", "NYZO": "Nyzo", "NZC": "NewZealandCoin", "NZDX": "eToro New Zealand Dollar", @@ -8181,6 +8742,7 @@ "OFC": "$OFC Coin", "OFCR": "CryptoPolice", "OFE": "Ofero", + "OFF": "BlastOff", "OFN": "Openfabric AI", "OG": "OG Fan Token", "OGCINU": "The OG Cheems Inu", @@ -8209,6 +8771,7 @@ "OJA": "Ojamu", "OJX": "Ojooo", "OK": "OKCash", + "OKAYEG": "Okayeg", "OKB": "OKB", "OKG": "Ookeenga", "OKINAMI": "Kanagawa Nami", @@ -8222,6 +8785,7 @@ "OLDSF": "OldSafeCoin", "OLE": "OpenLeverage", "OLEA": "Olea Token", + "OLEV1": "OpenLeverage v1", "OLIVE": "Olive", "OLOID": "OLOID", "OLT": "OneLedger", @@ -8232,6 +8796,7 @@ "OM": "MANTRA", "OMA": "OmegaCoin", "OMAX": "Omax", + "OMAXV1": "Omax v1", "OMC": "Omchain", "OMD": "OneMillionDollars", "OME": "o-mee", @@ -8244,6 +8809,7 @@ "OMMI": "Ommniverse", "OMNI": "Omni", "OMNIA": "OmniaVerse", + "OMNIC": "OmniCat", "OMNICRON": "OmniCron", "OMNINET": "Omni Network", "OMNIR": "Omni Real Estate Token", @@ -8259,6 +8825,7 @@ "ONDO": "Ondo", "ONE": "Harmony", "ONES": "OneSwap DAO", + "ONET": "ONE Token", "ONEX": "ONE TECH", "ONG": "SoMee.Social", "ONGAS": "Ontology Gas", @@ -8290,12 +8857,14 @@ "OPC": "OP Coin", "OPCAT": "OPCAT", "OPCT": "Opacity", - "OPEN": "Open Platform", + "OPEN": "Open Custody Protocol", "OPENAI": "OpenAI ERC", "OPENCHAT": "OpenChat", "OPENDAO": "OpenDAO", "OPENGO": "OPEN Governance Token", + "OPENP": "Open Platform", "OPENRI": "Open Rights Exchange", + "OPENSOURCE": "Open Source Network", "OPENX": "OpenSwap Optimism Token", "OPEPE": "Optimism PEPE", "OPES": "Opes", @@ -8305,13 +8874,14 @@ "OPINU": "Optimus Inu", "OPIUM": "Opium", "OPMND": "Open Mind Network", - "OPN": "Open Source Network", + "OPN": "OPEN Ticketing Ecosystem", "OPNN": "Opennity", "OPP": "Opporty", "OPS": "Octopus Protocol", "OPSC": "OpenSourceCoin", "OPSEC": "OpSec", "OPT": "Opus", + "OPTA": "Opta Global", "OPTC": "Open Predict Token", "OPTCM": "Optimus", "OPTI": "Optimus AI", @@ -8324,6 +8894,7 @@ "OPXVEVELO": "OpenX Locked Velo", "ORACLE": "Oracle AI", "ORACLECHAIN": "OracleChain", + "ORACUL": "Oracul Ai", "ORAI": "Oraichain Token", "ORAIX": "OraiDEX", "ORAO": "ORAO Network", @@ -8363,6 +8934,7 @@ "OROP": "ORO", "OROX": "Cointorox", "ORS": "ORS Group", + "ORT": "Okratech Token", "ORV": "Orvium", "ORYX": "OryxCoin", "OS": "Ethereans", @@ -8374,9 +8946,11 @@ "OSEAN": "OSEAN", "OSETH": "StakeWise Staked ETH", "OSF": "One Solution", + "OSH": "OSHI", "OSHI": "Oshi Token", "OSIS": "OSIS", "OSK": "OSK", + "OSKDAO": "OSK DAO", "OSL": "OSL AI", "OSMO": "Osmosis", "OSQTH": "Opyn Squeeth", @@ -8438,17 +9012,19 @@ "PAAL": "PAAL AI", "PAALV1": "PAAL AI v1", "PABLO": "PABLO DEFI", - "PAC": "PAC Protocol", + "PAC": "PacMoon", "PACE": "3space Art", "PACM": "Pacman Blastoff", "PACMAN": "Pac Man", "PACOCA": "Pacoca", + "PACP": "PAC Protocol", "PACT": "impactMarket", "PAD": "NearPad", "PAF": "Pacific", "PAGE": "Page", "PAI": "Project Pai", "PAID": "PAID Network", + "PAIDV1": "PAID Network v1", "PAINT": "MurAll", "PAIRED": "PairedWorld", "PAJAMAS": "The First Youtube Cat", @@ -8458,9 +9034,12 @@ "PALET": "Palette", "PALG": "PalGold", "PALLA": "Pallapay", - "PALM": "PalmPay", + "PALM": "PaLM AI", + "PALMP": "PalmPay", + "PALMV1": "PaLM AI v1", "PALMY": "Palmy", "PAM": "PAM", + "PAMBI": "Pambicoin", "PAMP": "PAMP Network", "PAN": "Pantos", "PAND": "Panda Finance", @@ -8477,13 +9056,16 @@ "PAPER": "Dope Wars Paper", "PAPI": "Papi", "PAPPAY": "PAPPAY", + "PAPU": "Papu Token", "PAPUSHA": "Papusha", "PAR": "Parachute", "PARA": "Paralink Network", "PARAB": "Parabolic", "PARADOX": "The Paradox Metaverse", + "PARAG": "Paragon Network", "PARAL": "Parallel", "PARALL": "Parallel Finance", + "PARAM": "Param", "PARANOIA": "ParanoiaCoin", "PARAS": "Paras", "PARAW": "Para", @@ -8503,6 +9085,7 @@ "PATEK": "Silly Patek", "PATEX": "Patex", "PATH": "PathDAO", + "PATTON": "Patton", "PAVIA": "Pavia", "PAVO": "Pavocoin", "PAW": "PAWSWAP", @@ -8541,10 +9124,12 @@ "PC": "Promotion Coin", "PCC": "PCORE", "PCCM": "Poseidon Chain", + "PCD": " Phecda", "PCE": "PEACE COIN", "PCH": "POPCHAIN", "PCHS": "Peaches.Finance", "PCI": "PayProtocol Paycoin", + "PCKB": "pCKB (via Godwoken Bridge from CKB)", "PCL": "Peculium", "PCM": "Procom", "PCN": "PeepCoin", @@ -8565,20 +9150,25 @@ "PDOG": "Polkadog", "PDOGE": "PolkaDoge", "PDRAGON": "Phoenix Dragon", + "PDRIP": "Pulse Drip", "PDT": "ParagonsDAO", "PDX": "PDX Coin", "PEA": "Pea Farm", "PEACH": "Based Peaches", "PEACHY": "Peachy", "PEAK": "PEAKDEFI", + "PEANIE": "Peanie", "PEAR": "Pear Swap", "PEARL": "Pearl Finance", "PEAS": "Peapods Finance", "PEC": "PeaceCoin", "PECL": "PECland", + "PED": "PEDRO", + "PEDRO": "Pedro The Raccoon", "PEEL": "Meta Apes", "PEEP": "Peepo", "PEEPA": "Peepa", + "PEEPEE": "Peepee", "PEEPO": "PEEPO", "PEEPS": "The People’s Coin", "PEEZY": "Young Peezy AKA Pepe", @@ -8588,27 +9178,36 @@ "PEIPEI": "PEIPEI", "PEKA": "PEKA", "PEKC": "Peacock Coin", + "PEKINU": "PEKI INU", "PEKO": "Pepe Neko", "PEL": "Propel Token", + "PELF": "PELFORT", "PEM": "Pembrock", "PENC": "PenCoin", "PENDLE": "Pendle", - "PENG": "PENG", + "PENG": "Peng", + "PENGCOIN": "PENG", "PENGYX": "PengyX", "PENIS": "PenisGrow", + "PENP": "Penpie", + "PENR": "Penrose Finance", "PENTA": "Penta", "PEOPLE": "ConstitutionDAO", - "PEOS": "pEOS", + "PEOSONE": "pEOS", + "PEP": "Pepechain", "PEPA": "Pepa Inu", "PEPC": "Pepe Classic", "PEPE": "Pepe", "PEPE2": "Pepe 2.0", "PEPE20V1": "Pepe 2.0 v1", + "PEPEA": "Pepeandybrettlandwolf", "PEPEAI": "Pepe Analytics", "PEPEARMY": "PEPEARMY", + "PEPEB": "PEPEBOMB", "PEPEBNB": "Pepe The Frog", "PEPEBRC": "PEPE (Ordinals)", "PEPEBURN": "Pepeburn", + "PEPEC": "Pepe Chain", "PEPECASH": "Pepe Cash", "PEPECAT": "PEPE CAT", "PEPECEO": "REAL PEPE CEO", @@ -8619,23 +9218,37 @@ "PEPEDERP": "PepeDerp", "PEPEE": "Pepe the pepe", "PEPEF": "PEPEFLOKI", + "PEPEFC": "Pepe FC", "PEPEFLOKI": "PEPE FLOKI", + "PEPEG": "Pepe Girl", "PEPEGA": "Pepe GEM AI", "PEPEGAINS": "PepeGains", + "PEPEGOAT": "pepeGOAT", "PEPEGRINCH": "Pepe Grinch", "PEPEINU": "PEPE inu", "PEPEKING": "PEPEKING", "PEPELON": "Pepelon", + "PEPEMAGA": "Trump Pepe", "PEPEMO": "PepeMo", "PEPEMOON": "PEPEMOON", "PEPEPI": "PEPEPi", + "PEPER": "Baby Pepe", "PEPERA": "PEPERA", + "PEPESOL": "PEPE SOL", "PEPESORA": "Pepe Sora AI", + "PEPESWAP": "PEPE Swap", + "PEPET": "PepeTrump", "PEPEW": "PEPEPOW", "PEPEWIFHAT": "Pepewifhat", + "PEPEWO": "PEPE World", "PEPEX": "pepeX", + "PEPEYE2": "PEPEYE 2.0", "PEPEZILLA": "PEPEZilla", "PEPI": "PEPI", + "PEPINU": "Pepinu", + "PEPIT": "Pepito", + "PEPLO": "Peplo Escobar", + "PEPO": "Peepo", "PEPPA": "PEPPA", "PEPPER": "Pepper Token", "PEPS": "PEPS Coin", @@ -8653,6 +9266,7 @@ "PERU": "PeruCoin", "PERX": "PeerEx Network", "PESA": "Credible", + "PESHI": "PESHI", "PESOBIT": "PesoBit", "PET": "Hello Pets", "PETF": "PEPE ETF", @@ -8661,9 +9275,11 @@ "PETL": "Petlife", "PETN": "Pylon Eco Token", "PETO": "Petoverse", + "PETOSHI": "Petoshi", "PETS": "PolkaPets", "PETT": "Pett Network", "PEUSD": "peg-eUSD", + "PEW": "pepe in a memes world", "PEX": "Pexcoin", "PFI": "PrimeFinance", "PFID": "Pofid Dao", @@ -8679,6 +9295,7 @@ "PGL": "Prospectors", "PGN": "Pigeoncoin", "PGOLD": " Polkagold", + "PGPT": "PrivateAI", "PGROK": "Papa Grok", "PGT": "Polyient Games Governance Token", "PGTS": "Puregold token", @@ -8687,6 +9304,7 @@ "PHA": "Phala Network", "PHAE": "Phaeton", "PHALA": "Phalanx", + "PHAME": "PHAME", "PHAUNTEM": "Phauntem", "PHB": "Phoenix Global [v2]", "PHBD": "Polygon HBD", @@ -8704,6 +9322,7 @@ "PHOON": "Typhoon Cash", "PHORE": "Phore", "PHR": "Phreak", + "PHRYGE": "PHRYGES", "PHS": "PhilosophersStone", "PHT": "Photon Token", "PHTC": "Photochain", @@ -8734,6 +9353,7 @@ "PIN": "Pin", "PINCHI": "Da Pinchi", "PINE": "Pine", + "PINETWORKDEFI": "Pi Network DeFi", "PING": "CryptoPing", "PINK": "PinkCoin", "PINKSALE": "PinkSale", @@ -8741,13 +9361,15 @@ "PINMO": "Pinmo", "PINO": "Pinocchu", "PINU": "Piccolo Inu", + "PINU100X": "Pi INU 100x", "PIO": "Pioneershares", "PIP": "Pip", "PIPA": "Pipa Coin", "PIPI": "Pippi Finance", "PIPL": "PiplCoin", "PIPT": "Power Index Pool Token", - "PIRATE": "PirateCash", + "PIRATE": "Pirate Nation", + "PIRATECASH": "PirateCash", "PIRATECOIN": "Pirate Coin Games", "PIRB": "PIRB", "PIRI": "Pirichain", @@ -8762,6 +9384,7 @@ "PIXEL": "Pixels", "PIXELV": "PixelVerse", "PIZA": "Half Pizza", + "PIZPEPE": "Pepe Pizzeria", "PIZZA": "PizzaSwap", "PIZZACOIN": "PizzaCoin", "PJM": "Pajama.Finance", @@ -8780,6 +9403,7 @@ "PLAI": "Plair", "PLAN": "Plancoin", "PLANE": "Paper Plane", + "PLANET": "PLANET", "PLANETCOIN": "PlanetCoin", "PLANETS": "PlanetWatch", "PLASTIK": "Plastiks", @@ -8808,6 +9432,7 @@ "PLGR": "Pledge Finance", "PLI": "Plugin", "PLM": "Plasmonics", + "PLMC": "Polimec", "PLMT": "Pallium", "PLNC": "PLNCoin", "PLNX": "Planumex", @@ -8828,6 +9453,7 @@ "PLU": "Pluton", "PLUG": "PL^Gnet", "PLUGCN": "Plug Chain", + "PLUP": "PoolUp", "PLURA": "PluraCoin", "PLUS1": "PlusOneCoin", "PLUTUS": "PlutusDAO", @@ -8836,6 +9462,7 @@ "PLY": "Aurigami", "PLZ": "PLUNZ", "PMA": "PumaPay", + "PMD": "Pandemic Multiverse", "PME": "DogePome", "PMEER": "Qitmeer", "PMG": "Pomerium Ecosystem Token", @@ -8846,7 +9473,9 @@ "PMOON": "Pookimoon", "PMPY": "Prometheum Prodigy", "PMR": "Pomerium Utility Token", + "PMT": "POWER MARKET", "PMTN": "Peer Mountain", + "PNB": "Pink BNB", "PNC": "PlatiniumCoin", "PND": "PandaCoin", "PNDC": "Pond Coin", @@ -8864,16 +9493,19 @@ "POA": "Poa Network", "POAI": "Port AI", "POC": "POC Blockchain", + "POCAT": "Polite Cat", "POCC": "POC Chain", "POCKET": "XPocket", "POCO": "Pocoland", "POD": "Podo Point", + "PODFAST": "PodFast", "PODIUM": "Smart League", "PODO": "Power Of Deep Ocean", "POE": "Po.et", "POG": "PolygonumOnline", "POGAI": "POGAI", "POGS": "POG", + "POINT": "SportPoint", "POINTS": "Cryptsy Points", "POK": "Pokmonsters", "POKEGROK": "PokeGROK", @@ -8886,6 +9518,7 @@ "POKT": "Pocket Network", "POL": "Polygon Ecosystem Token", "POLA": "Polaris Share", + "POLAO": "Pola On Base", "POLAR": "Polaris", "POLC": "Polka City", "POLI": "Polinate", @@ -8894,7 +9527,9 @@ "POLK": "Polkamarkets", "POLKER": "Polker", "POLL": "Pollchain", + "POLLUK": "Jasse Polluk", "POLNX": "eToro Polish Zloty", + "POLO": "NftyPlay", "POLS": "Polkastarter", "POLVEN": "Polka Ventures", "POLX": "Polylastic", @@ -8959,6 +9594,7 @@ "POTS": "Moonpot", "POTTER": "POTTER", "POU": "Pou", + "POW": "PowBlocks", "POWELL": "Jerome Powell", "POWER": "UniPower", "POWR": "Power Ledger", @@ -8969,6 +9605,7 @@ "PPAY": "Plasma Finance", "PPBLZ": "Pepemon Pepeballs", "PPC": "PeerCoin", + "PPFT": "Papparico Finance", "PPI": "Primpy", "PPIZZA": "P Pizza", "PPL": "Pink Panther Lovers", @@ -8999,15 +9636,19 @@ "PREMIA": "Premia", "PRES": "President Trump", "PRESALE": "Presale.World", + "PRESI": "Turbo Trump", + "PRESID": "President Ron DeSantis", "PRFT": "Proof Suite Token", "PRG": "Paragon", "PRI": "PRIVATEUM INITIATIVE", "PRIA": "PRIA", + "PRICK": "Pickle Rick", "PRIDE": "Nomad Exiles", "PRIMAL": "PRIMAL", "PRIMATE": "Primate", "PRIME": "Echelon Prime", "PRIMECHAIN": "PrimeChain", + "PRIMEETH": "Prime Staked ETH", "PRINT": "Printer.Finance", "PRINTERIUM": "Printerium", "PRINTS": "FingerprintsDAO", @@ -9027,12 +9668,15 @@ "PROOF": "PROVER", "PROP": "Propeller", "PROPC": "Propchain", + "PROPEL": "PayRue (Propel)", "PROPHET": "PROPHET", - "PROPS": "Props", + "PROPS": "Propbase", + "PROPSPROJECT": "Props", "PROS": "Prosper", "PROT": "PROT", "PROTEO": "Proteo DeFi", "PROTO": "Protocon", + "PROTOCOLZ": "Protocol Zero", "PROTON": "Proton", "PROUD": "PROUD Money", "PROXI": "PROXI", @@ -9043,6 +9687,7 @@ "PRS": "PressOne", "PRT": "Parrot Protocol", "PRTC": "Protectorate Protocol", + "PRTCLE": "Particle", "PRTG": "Pre-Retogeum", "PRV": "PrivacySwap", "PRVC": "PrivaCoin", @@ -9084,12 +9729,14 @@ "PTF": "PowerTrade Fuel", "PTH": "PlasticHero", "PTI": "Paytomat", + "PTM": "Potentiam", "PTN": "PalletOneToken", "PTO": "Patentico", "PTON": "Foresting", "PTOY": "Patientory", "PTP": "Platypus Finance", "PTR": "Petro", + "PTRUMP": "Pepe Trump", "PTT": "Pink Taxi Token", "PTU": "Pintu Token", "PTX": "PlatinX", @@ -9097,6 +9744,7 @@ "PUFETH": "pufETH", "PUFF": "Puff", "PUFFIN": "Puffin Global", + "PUFFT": "Puff The Dragon", "PUGAI": "PUG AI", "PUGL": "PugLife", "PULI": "Puli", @@ -9109,9 +9757,12 @@ "PUNCH": "PUNCHWORD", "PUNDIX": "Pundi X", "PUNDU": "Pundu", - "PUNK": "SteamPunk", + "PUNK": "PunkCity", "PUNKAI": "PunkAI", + "PUNKV": "Punk Vault (NFTX)", + "PUP": "Puppy Coin", "PUPA": "PupaCoin", + "PUPPER": "Pupper", "PUPPETS": "Puppets Coin", "PUPPIES": "I love puppies", "PUPS": "PUPS (Ordinals)", @@ -9120,12 +9771,14 @@ "PUREALT": "Pure", "PURR": "SpartaCats", "PURSE": "Pundi X PURSE", + "PUS": "Pussy Cat", "PUSD": "PegsUSD", "PUSH": "Ethereum Push Notification Service", "PUSHI": "Pushi", "PUSSY": "Pussy Financial", "PUSSYINBIO": "Pussy In Bio", "PUT": "PutinCoin", + "PUUSH": "puush da button", "PUX": "pukkamex", "PVC": "PVC Meta", "PVFYBO": "JRVGCUPVSC", @@ -9133,6 +9786,7 @@ "PVT": "Pivot Token", "PVU": "Plant vs Undead Token", "PWAR": "PolkaWar", + "PWC": "PixelWorldCoin", "PWH": "pepewifhat", "PWINGS": "JetSwap pWings", "PWON": "Personal Wager", @@ -9191,17 +9845,20 @@ "QCO": "Qravity", "QCX": "QuickX Protocol", "QDC": "Quadrillion Coin", + "QDFI": "Qudefi", "QDROP": "QuizDrop", "QDT": "QCHAIN", "QDX": "Quidax", "QFI": "QFinance", "QI": "BENQI", "QIE": "QI Blockchain", + "QINGWA": "ShangXin QingWa", "QISWAP": "QiSwap", "QKC": "QuarkChain", "QKNTL": "Quick Intel", "QLC": "Kepple [OLD]", "QLINDO": "QLINDO", + "QLIX": "QLix", "QMALL": "QMALL TOKEN", "QNT": "Quant", "QNTR": "Quantor", @@ -9216,7 +9873,6 @@ "QQQ": "Poseidon Network", "QQQF": "Standard Crypto Fund", "QR": "Qrolli", - "QRDO": "Qredo", "QRK": "QuarkCoin", "QRL": "Quantum Resistant Ledger", "QRO": "Querio", @@ -9226,9 +9882,11 @@ "QSLV": "Quicksilver coin", "QSP": "Quantstamp", "QSR": "Quasar", + "QSWAP": "Quantum Network", "QTC": "Qitcoin", "QTCON": "Quiztok", "QTF": "Quantfury", + "QTK": "QuantCheck", "QTL": "Quatloo", "QTO": "QToken", "QTUM": "QTUM", @@ -9238,6 +9896,7 @@ "QUAM": "Quam Network", "QUANT": "Quant Finance", "QUARASHI": "Quarashi Network", + "QUARK": "Quark", "QUARTZ": "Sandclock", "QUASA": "Quasacoin", "QUB": "Qubism", @@ -9248,10 +9907,12 @@ "QUICK": "Quickswap", "QUICKOLD": "Quickswap", "QUIDD": "Quidd", + "QUIL": "Wrapped QUIL", "QUIN": "QUINADS", "QUINT": "Quint", "QUIPU": "QuipuSwap Governance Token", "QUIZ": "Quizando", + "QUNT": "Quants", "QUO": "Quoll Finance", "QUROZ": "Qfora", "QUSD": "QUSD", @@ -9269,6 +9930,7 @@ "R3T": "Real Estate Token", "R4RE": "R4RE Token", "RAB": "Rabbit", + "RABB": "Rabbit INU", "RABBIT": "Rabbit Finance", "RABI": "Rabi", "RAC": "RAcoin", @@ -9280,7 +9942,9 @@ "RADI": "RadicalCoin", "RADIO": "RadioShack", "RADR": "CoinRadr", + "RADX": "Radx AI", "RAFF": "Ton Raffles", + "RAFFLES": "Degen Raffles", "RAFL": "RAFL", "RAFT": "Raft", "RAGE": "Rage Fan", @@ -9299,6 +9963,7 @@ "RAK": "Rake Finance", "RAKE": "Rake Coin", "RAKU": "RAKUN", + "RALLY": "Trump Rally", "RAM": "Ramifi Protocol", "RAMA": "Ramestta", "RAMEN": "RamenSwap", @@ -9310,6 +9975,7 @@ "RARE": "SuperRare", "RARI": "Rarible", "RASTA": "ZionLabs Token", + "RAT": "RatCoin", "RATECOIN": "Ratecoin", "RATING": "DPRating", "RATIO": "Ratio", @@ -9339,6 +10005,7 @@ "RBNB": "StaFi Staked BNB", "RBP": "Rare Ball Potion", "RBR": "Ribbit Rewards", + "RBRETT": "ROARING BRETT", "RBT": "Rabet", "RBTC": "Smart Bitcoin", "RBUNNY": "Rocket Bunny", @@ -9367,6 +10034,7 @@ "RDGX": "R-DEE Protocol", "RDN": "Raiden Network Token", "RDNT": "Radiant Capital", + "RDNTV1": "Radiant Capital v1", "RDO": "Rodeo Finance", "RDPX": "Dopex Rebate Token", "RDR": "Rise of Defenders", @@ -9386,6 +10054,7 @@ "REBL": "REBL", "REBUS": "Rebuschain", "REC": "Rec Token (REC)", + "RECA": "The Resistance Cat", "RECKOON": "Reckoon", "RECOM": "Recom", "RED": "RED TOKEN", @@ -9400,8 +10069,11 @@ "REDLUNA": "Redluna", "REDN": "Reden", "REDO": "Resistance Dog", + "REDP": "Red Ponzi Gud", "REDPEPE": "Red Pepe", + "REDZILLA": "REDZILLA COIN", "REE": "ReeCoin", + "REEE": "REEE", "REEF": "Reef", "REELT": "Reel Token", "REF": "Ref Finance", @@ -9411,7 +10083,9 @@ "REFTOKEN": "RefToken", "REFUND": "Refund", "REGALCOIN": "Regalcoin", + "REGEN": "Regen Network", "REGENT": "REGENT COIN", + "REHA": "Resistance Hamster", "REHAB": "NFT Rehab", "REI": "REI Network", "REIGN": "Reign of Terror", @@ -9443,12 +10117,15 @@ "REPUX": "Repux", "REQ": "Request Network", "RES": "Resistance", + "RESCUE": "Rescue", "REST": "Restore", "RET": "RealTract", "RETA": "Realital Metaverse", "RETAIL": "Retail.Global", + "RETARDIO": "RETARDIO", "RETH": "Rocket Pool ETH", "RETH2": "rETH2", + "RETIK": "Retik Finance", "RETIRE": "Retire Token", "REU": "REUCOIN", "REUNI": "Reunit Wallet", @@ -9481,6 +10158,7 @@ "RGAME": "RGAMES", "RGC": "RG Coin", "RGEN": "Paragen", + "RGOAT": "RealGOAT", "RGOLD": "Royal Gold", "RGP": "Rigel Protocol", "RGT": "Rari Governance Token", @@ -9496,6 +10174,7 @@ "RICE": "RiceFarm", "RICECOIN": "RiceCoin", "RICH": "Richie", + "RICHOFME": "Rich Of Memes", "RICK": "Infinite Ricks", "RICKMORTY": "Rick And Morty", "RIDE": "Holoride", @@ -9530,6 +10209,7 @@ "RIVUS": "RivusDAO", "RIYA": "Etheriya", "RIZE": "Rizespor Token", + "RIZO": "Rizo", "RJV": "Rejuve.AI", "RKC": "Royal Kingdom Coin", "RKI": "RAKHI", @@ -9566,11 +10246,14 @@ "RNX": "ROONEX", "ROAD": "ROAD", "ROAR": "Alpha DEX", + "ROARINGCAT": "Roaring Kitty", "ROB": "ROB", "ROBET": "RoBet", "ROBIN": "Robin of Da Hood", + "ROBINH": "ROBIN HOOD", "ROBO": "RoboHero", "ROC": "Rasputin Online Coin", + "ROCCO": "Just A Rock", "ROCK": "Bedrock", "ROCK2": "Ice Rock Mining", "ROCKET": "Team Rocket", @@ -9584,6 +10267,7 @@ "ROG": "ROGin AI", "ROI": "ROIcoin", "ROK": "Rockchain", + "ROKM": "Rocket Ma", "ROKO": "Roko", "ROLS": "RollerSwap", "ROM": "ROMCOIN", @@ -9596,11 +10280,14 @@ "ROOBEE": "ROOBEE", "ROOK": "KeeperDAO", "ROOM": "OptionRoom", + "ROON": "Raccoon", "ROOST": "Roost Coin", + "ROOSTV1": "Roost Coin v1", "ROOT": "The Root Network", "ROOTCOIN": "RootCoin", "ROOTS": "RootProject", "ROS": "ROS Coin", + "ROSA": "Rosa Inu", "ROSE": "Oasis Labs", "ROSN": "Roseon Finance", "ROSX": "Roseon", @@ -9614,16 +10301,19 @@ "ROW": "Rage On Wheels", "ROWAN": "Sifchain", "ROX": "Robotina", + "ROXY": "ROXY FROG", "ROY": "Crypto Royale", "ROYA": "Royale", "ROYAL": "RoyalCoin", "RPB": "Republia", "RPC": "RonPaulCoin", "RPD": "Rapids", + "RPEPEc": "RoaringPepe", "RPG": "Rangers Protocol", "RPILL": "Red Pill", "RPK": "RepubliK", "RPL": "RocketPool", + "RPLAY": "Replay", "RPM": "Render Payment", "RPR": "The Reaper", "RPS": "Rps League", @@ -9634,6 +10324,7 @@ "RRB": "Renrenbit", "RRC": "Recycling Regeneration Chain", "RRT": "Recovery Right Tokens", + "RS": "ReadySwap", "RSC": "ResearchCoin", "RSETH": "Kelp DAO Restaked ETH", "RSF": "Royal Sting", @@ -9643,6 +10334,7 @@ "RSPN": "Respan", "RSR": "Reserve Rights", "RSRV": "Reserve", + "RSRV1": "Reserve Rights v1", "RSS3": "RSS3", "RST": "REGA Risk Sharing Token", "RSTK": "Restake Finance", @@ -9655,6 +10347,7 @@ "RTE": "Rate3", "RTF": "Ready to Fight", "RTH": "Rotharium", + "RTK": "RetaFi", "RTM": "Raptoreum", "RTT": "Restore Truth Token", "RU": "RIFI United", @@ -9666,20 +10359,26 @@ "RUC": "Rush", "RUFF": "Ruff", "RUG": "Rug", + "RUGA": "RUGAME", "RUGZ": "pulltherug.finance", "RULER": "Ruler Protocol", + "RUM": "RUM Pirates of The Arrland Token", + "RUN": "Run", "RUNE": "Thorchain", "RUNY": "Runy", "RUP": "Rupee", "RUPX": "Rupaya", "RUSD": "Reflecto USD", "RUSH": "RUSH COIN", + "RUSHCMC": "RUSHCMC", "RUST": "RustCoin", "RUSTBITS": "Rustbits", + "RUTH": "RUTH", "RUUF": "RuufCoin", "RUX": "Gacrux NFT", "RVC": "Revenue Coin", "RVF": "RocketX exchange", + "RVL": "Revolotto", "RVLNG": "RevolutionGames", "RVLT": "Revolt 2 Earn", "RVM": "Realvirm", @@ -9697,6 +10396,7 @@ "RWE": "Real-World Evidence", "RWN": "Rowan Token", "RWS": "Robonomics Web Services", + "RWT": "RWT TOKEN", "RXCG": "RXCGames", "RXD": "Radiant", "RXO": "RocketXRP Official", @@ -9712,6 +10412,7 @@ "RZR": "RazorCoin", "RedFlokiCEO": "Red Floki CEO", "S2K": "Sports 2K75", + "S315": "SWAP315", "S4F": "S4FE", "S8C": "S88 Coin", "SA": "Superalgos", @@ -9726,8 +10427,10 @@ "SAFECOIN": "SafeCoin", "SAFEGROK": "SafeGrok", "SAFEHAMSTERS": "SafeHamsters", + "SAFELIGHT": "SafeLight", "SAFELUNAR": "SafeLunar", "SAFEMARS": "Safemars", + "SAFEMOO": "SafeMoo", "SAFEMOON": "SafeMoon", "SAFEMOONCASH": "SafeMoonCash", "SAFEMUUN": "Safemuun", @@ -9739,7 +10442,8 @@ "SAFLE": "Safle", "SAFTP": "Simple Agreement for Future Tokens", "SAFUU": "SAFUU", - "SAGA": "SagaCoin", + "SAGA": "Saga", + "SAGACOIN": "SagaCoin", "SAI": "SAI", "SAIL": "SAIL", "SAITA": "SaitaChain", @@ -9756,6 +10460,7 @@ "SALD": "Salad", "SALE": "DxSale Network", "SALLY": "SALAMANDER", + "SALMAN": "Mohameme Bit Salman", "SALMON": "Salmon", "SALT": "Salt Lending", "SAM": "Samsunspor Fan Token", @@ -9806,10 +10511,12 @@ "SB": "DragonSB", "SBA": "simplyBrand", "SBABE": "SNOOPYBABE", + "SBAE": "Salt Bae For The People", "SBC": "StableCoin", "SBCC": "Smart Block Chain City", "SBE": "Sombe", "SBEFE": "BEFE", + "SBET": "SBET", "SBF": "SBF In Jail", "SBGO": "Bingo Share", "SBIO": "Vector Space Biosciences, Inc.", @@ -9824,6 +10531,7 @@ "SCA": "SiaClassic", "SCALE": "Scalia Infrastructure", "SCAM": "Scam Coin", + "SCAMP": "ScamPump", "SCANS": "0xScans", "SCAP": "SafeCapital", "SCAPE": "Etherscape", @@ -9837,11 +10545,14 @@ "SCFX": "Shui CFX", "SCH": "SoccerHub", "SCHO": "Scholarship Coin", + "SCHR": "Schrodinger", + "SCHRODI": "Schrödi", "SCIA": "Stem Cell", "SCIVIVE": "sciVive", "SCIX": "Scientix", "SCK": "Space Corsair Key", "SCL": "Sociall", + "SCLASSIC": "Solana Classic", "SCLP": "Scallop", "SCM": "ScamFari token", "SCN": "Swiscoin", @@ -9859,6 +10570,7 @@ "SCPT": "Script Network", "SCRAP": "Scrap", "SCRAPPY": "Scrappy", + "SCRAT": "Scrat", "SCRATCH": "Scratch", "SCREAM": "Scream", "SCRIBE": "Scribe Network", @@ -9907,6 +10619,8 @@ "SECOND": "MetaDOS", "SECRT": "SecretCoin", "SECT": "SECTBOT", + "SECTO": "Sector Finance", + "SEDA": "SEDA Protocol", "SEED": "Superbloom", "SEEDS": "SeedShares", "SEEDV": "Seed Venture", @@ -9921,12 +10635,14 @@ "SEKAI": "Sekai DAO", "SEL": "SelenCoin", "SELF": "SELFCrypto", + "SELFIE": "SelfieDogCoin", "SELLC": "Sell Token", "SEM": "Semux", "SEN": "Sentaro", "SENATE": "SENATE", "SENC": "Sentinel Chain", "SEND": "Social Send", + "SENK": "Senk", "SENNO": "SENNO", "SENSE": "Sense Token", "SENSI": "Sensi", @@ -9945,11 +10661,13 @@ "SERSH": "Serenity Shield", "SERV": "Serve", "SERVE": "Metavice", + "SESE": "Simpson Pepe", "SESSIA": "SESSIA", "SETH": "sETH", "SETH2": "sETH2", "SETHER": "Sether", "SETS": "Sensitrust", + "SEW": "simpson in a memes world", "SEX": "SEX Odyssey", "SEXY": "EthXY", "SFARM": "SolFarm", @@ -9968,12 +10686,14 @@ "SFP": "SafePal", "SFR": "SaffronCoin", "SFRC": "Safari Crush", + "SFRXETH": "Frax Staked Ether", "SFT": "SportsFix", "SFTMX": "Stader sFTMX", "SFTY": "Stella Fantasy", "SFU": "Saifu", "SFUEL": "SparkPoint Fuel", "SFUND": "Seedify.fund", + "SFV2": "ShibaFameV2", "SFX": "SUBX FINANCE LAB", "SG": "SocialGood", "SGB": "Songbird", @@ -10004,6 +10724,7 @@ "SHARECHAIN": "ShareChain", "SHARES": "shares.finance", "SHARK": "Sharky", + "SHARKC": "Shark Cat", "SHARPE": "Sharpe Capital", "SHAUN": "SHAUN INU", "SHB4": "Super Heavy Booster 4", @@ -10020,7 +10741,7 @@ "SHEPE": "Shiba V Pepe", "SHERA": "Shera Tokens", "SHEZMU": "Shezmu", - "SHFL": "SHUFFLE!", + "SHFL": "Shuffle", "SHFT": "Shyft Network", "SHG": "Shib Generating", "SHI": "Shirtum", @@ -10029,12 +10750,14 @@ "SHIB05": "Half Shiba Inu", "SHIB1": "Shib1", "SHIB2": "SHIB2", + "SHIBA": "Shibaqua", "SHIBAAI": "SHIBAAI", "SHIBAC": "SHIBA CLASSIC", "SHIBACASH": "ShibaCash", "SHIBAI": "AiShiba", "SHIBAKEN": "Shibaken Finance", "SHIBAMOM": "Shiba Mom", + "SHIBAR": "Shibarium Name Service", "SHIBARMY": "Shib Army", "SHIBAY": "Shiba Inu Pay", "SHIBAZILLA": "ShibaZilla2.0", @@ -10064,6 +10787,8 @@ "SHIL": "Shila Inu", "SHILL": "SHILL Token", "SHILLD": "SHILLD", + "SHILLG": "Shill Guard Token", + "SHIN": "Shin Chan", "SHINA": "Shina Inu", "SHINJA": "Shibnobi", "SHINO": "ShinobiVerse", @@ -10090,14 +10815,17 @@ "SHOW": "ShowCoin", "SHPING": "Shping Coin", "SHR": "ShareToken", + "SHRA": "Shrapnel", "SHRAP": "Shrapnel", "SHRED": "ShredN", "SHREK": "ShrekCoin", "SHRIMP": "SHRIMP", "SHROOM": "Shroom.Finance", "SHROOMFOX": "Magic Shroom", + "SHRUB": "Shrub", "SHS": "SHEESH", "SHUB": "SimpleHub", + "SHUFFLE": "SHUFFLE!", "SHVR": "Shivers", "SHX": "Stronghold Token", "SHYTCOIN": "ShytCoin", @@ -10105,6 +10833,7 @@ "SIB": "SibCoin", "SIBA": "SibaInu", "SIC": "Swisscoin", + "SID": "Sid", "SIDE": "Side.xyz", "SIDESHIFT": "SideShift Token", "SIDUS": "Sidus", @@ -10132,6 +10861,7 @@ "SIMPSON": "Homer", "SIMPSON6900": "Simpson6900 ", "SIMPSONSINU": "The Simpsons Inu", + "SIMSOL": "SimSol", "SIN": "Sinverse", "SINE": "Sinelock", "SING": "SingularFarm", @@ -10139,6 +10869,7 @@ "SINS": "SafeInsure", "SINSO": "SINSO", "SINX": "SINX Token", + "SION": "FC Sion", "SIP": "Space SIP", "SIPHER": "Sipher", "SIPHON": "Siphon Life Spell", @@ -10155,6 +10886,7 @@ "SIZ": "Sizlux", "SIZE": "SIZE", "SJCX": "StorjCoin", + "SKAI": "Skillful AI", "SKB": "SkullBuzz", "SKC": "Skeincoin", "SKCS": "Staked KCS", @@ -10166,11 +10898,14 @@ "SKID": "Success Kid", "SKILL": "CryptoBlades", "SKIN": "Skincoin", + "SKING": "Solo King", "SKINS": "Coins & Skins", + "SKIPUP": "SKI MASK PUP", "SKL": "SKALE Network", "SKLAY": "sKLAY", "SKM": "Skrumble Network", "SKO": "Sugar Kingdom Odyssey", + "SKOP": "Skulls of Pepe Token", "SKPEPE": "Sheikh Pepe", "SKR": "Sakuracoin", "SKRB": "Sakura Bloom", @@ -10182,6 +10917,7 @@ "SKU": "Sakura", "SKULL": "Pirate Blocks", "SKY": "Skycoin", + "SKYA": "Sekuya Multiverse", "SKYFT": "SKYFchain", "SKYM": "SkyMap", "SKYRIM": "Skyrim Finance", @@ -10221,15 +10957,18 @@ "SLS": "SaluS", "SLST": "SmartLands", "SLT": "Social Lending Network", + "SLUMBO": "SLUMBO", "SLVX": "eToro Silver", "SLX": "Slate", "SMA": "Soma Network", "SMAC": "Social Media Coin", + "SMAK": "Smartlink", "SMARS": "SafeMars", "SMART": "SmartCash", "SMARTB": "Smart Coin", "SMARTCREDIT": "SmartCredit Token", "SMARTLOX": "SmartLOX", + "SMARTM": "SmartMesh", "SMARTMEME": "SmartMEME", "SMARTNFT": "SmartNFT", "SMARTO": "smARTOFGIVING", @@ -10246,6 +10985,7 @@ "SMG": "Smaugs NFT", "SMH": "Spacemesh", "SMI": "SafeMoon Inu", + "SMIDGE": "Smidge", "SMILE": "Smile Token", "SMILEK": "Smilek to the Bank", "SMILEY": "SMILEY", @@ -10266,7 +11006,7 @@ "SMRT": "SmartMoney", "SMRTR": "SmarterCoin", "SMSR": "Samsara Coin", - "SMT": "SmartMesh", + "SMT": "Swarm Markets", "SMTF": "SmartFi", "SMTY": "Smoothy", "SMU": "SafeMoneyUP", @@ -10290,8 +11030,9 @@ "SNEK": "Snek", "SNEKE": "Snek on Ethereum", "SNET": "Snetwork", - "SNFT.BITCI": "Spanish National Team Fan Token", + "SNFT": "Spanish National Team Fan Token", "SNFTS": "Seedify NFT Space", + "SNG": "SINERGIA", "SNGLS": "SingularDTV", "SNIP": "LyrnAI", "SNIPPEPE": "SNIPING PEPE", @@ -10304,10 +11045,13 @@ "SNOB": "Snowball", "SNOOP": "SnoopDAO", "SNOOPY": "Snoopy", + "SNORK": "Snork", "SNORT": "SNORT", "SNOV": "Snovio", "SNOW": "Snowswap", + "SNOWBALL": "Simpson Cat", "SNOWMANTASTIC": "Snowmantastic", + "SNPAD": "SNP adverse", "SNPC": "SnapCoin", "SNPS": "Snaps", "SNRG": "Synergy", @@ -10358,12 +11102,14 @@ "SOLARFARM": "SolarFarm", "SOLARIX": "SOLARIX", "SOLAV": "SOLAV TOKEN", + "SOLBET": "SOL STREET BETS", "SOLBULL": "SOLBULL", "SOLC": "SolCard", "SOLCASH": "SOLCash", "SOLCAT": "SOLCAT", "SOLCEX": "SolCex", "SOLE": "SoleCoin", + "SOLETF": "SOL ETF", "SOLEX": "Solex Launchpad", "SOLFI": "SoliDefi", "SOLGOAT": "SOLGOAT", @@ -10371,6 +11117,9 @@ "SOLID": "Solidified", "SOLIDSEX": "SOLIDsex: Tokenized veSOLID", "SOLKIT": "Solana Kit", + "SOLLY": "Solly", + "SOLMATES": "SOLMATES", + "SOLMEME": "TrumpFFIEGMEBidenCAT2024AMC", "SOLNAV": "SOLNAV AI", "SOLNIC": "Solnic", "SOLO": "Sologenic", @@ -10382,6 +11131,7 @@ "SOLSCC": "sols", "SOLSPONGE": "Solsponge", "SOLVE": "SOLVE", + "SOLWIF": "Solwif", "SOLX": "SolarX", "SOLY": "Solamander", "SOLZILLA": "Solzilla", @@ -10400,10 +11150,12 @@ "SOON": "Soonaverse", "SOONCOIN": "SoonCoin", "SOP": "SoPay", + "SOPHON": "Sophon (Atomicals)", "SOR": "Sorcery", "SORA": "Sora Validator Token", "SORACEO": "SORA CEO", "SORADOGE": "Sora Doge", + "SORAETH": "SORA", "SORAI": "Sora AI", "SORAPORN": "Sora Porn", "SOSNOVKINO": "Sosnovkino", @@ -10414,10 +11166,12 @@ "SOULS": "Soulsaver", "SOUND": "Sound Coin", "SOURCE": "ReSource Protocol", + "SOUTH": "DeepSouth AI", "SOV": "Sovryn", "SOVE": "Soverain", "SOVI": "Sovi Finance", "SOWA": "Sowa AI", + "SOX": "Nobby Game", "SOY": "Soy Finance", "SP": "Sex Pistols", "SP8DE": "Sp8de", @@ -10442,12 +11196,14 @@ "SPDX": "Speedex", "SPE": "SavePlanetEarth", "SPEC": "SpecCoin", + "SPECT": "Spectral", "SPECTRE": "SPECTRE AI", "SPEEDY": "Speedy", "SPELL": "Spell Token", "SPELLFIRE": "Spellfire", "SPEND": "Spend", "SPENDC": "SpendCoin", + "SPENT": "Espento", "SPEPE": "SolanaPepe", "SPEX": "StepEx", "SPF": "SportyCo", @@ -10460,6 +11216,10 @@ "SPHRI": "Spherium", "SPHTX": "SophiaTX", "SPHYNX": "Sphynx Token", + "SPHYNXV1": "Sphynx Token v1", + "SPHYNXV2": "Sphynx Token v2", + "SPHYNXV3": "Sphynx Token v3", + "SPHYNXV4": "Sphynx Token v4", "SPI": "Shopping.io", "SPICE": "Spice", "SPIDER": "Spider Man", @@ -10473,6 +11233,7 @@ "SPK": "SparksPay", "SPKL": "SpokLottery", "SPKTR": "Ghost Coin", + "SPL": "SocialPal", "SPLA": "SmartPlay", "SPM": "Supreme", "SPN": "Sapien Network", @@ -10487,6 +11248,7 @@ "SPOOL": "Spool DAO Token", "SPORE": "Enoki Finance", "SPORT": "SportsCoin", + "SPORTS": "ZenSports", "SPOTS": "Spots", "SPOX": "Sports Future Exchange Token", "SPRING": "Spring", @@ -10495,6 +11257,7 @@ "SPRT": "Sportium", "SPRTS": "Sprouts", "SPRTZ": "SpritzCoin", + "SPRX": "Sprint Coin", "SPS": "Splinterlands", "SPT": "SPECTRUM", "SPUME": "Spume", @@ -10520,6 +11283,7 @@ "SQUID": "Squid Game", "SQUID2": "Squid Game 2.0", "SQUIDGROW": "SquidGrow", + "SQUIDGROWV1": "SquidGrow v1", "SQUOGE": "DogeSquatch", "SRBP": "Super Rare Ball Potion", "SRC": "SecureCoin", @@ -10556,6 +11320,7 @@ "SSU": "Sunny Side up", "SSV": "ssv.network", "SSVCOIN": "SSVCoin", + "SSVV1": "Blox", "SSWP": "Suiswap", "SSX": "SOMESING", "ST": "Skippy Token", @@ -10580,7 +11345,8 @@ "STARLAUNCH": "StarLaunch", "STARLY": "Starly", "STARP": "Star Pacific Coin", - "STARS": "Mogul Productions", + "STARRI": "starri", + "STARS": "Stargaze", "STARSH": "StarShip Token", "STARSHI": "Starship", "STARSHIP": "STARSHIP", @@ -10588,6 +11354,7 @@ "START": "StartCoin", "STARTA": "Starta", "STARWARS": "Star Wars", + "STARX": "STARX TOKEN", "STASH": "BitStash", "STAT": "STAT", "STATE": "New World Order", @@ -10605,6 +11372,7 @@ "STDYDX": "Stride Staked DYDX", "STEAK": "SteakHut Finance", "STEALTH": "StealthPad", + "STEAMPUNK": "SteamPunk", "STEEM": "Steem", "STEEMD": "Steem Dollars", "STEEP": "SteepCoin", @@ -10636,7 +11404,10 @@ "STKAAVE": "Staked Aave", "STKATOM": "pSTAKE Staked ATOM", "STKBNB": "pSTAKE Staked BNB", + "STKC": "Streakk Chain", + "STKHUAHUA": "pSTAKE Staked HUAHUA", "STKK": "Streakk", + "STKSTARS": "pSTAKE Staked STARS", "STKXPRT": "pSTAKE Staked XPRT", "STLE": "Saint Ligne", "STMAN": "Stickman Battleground", @@ -10645,8 +11416,10 @@ "STND": "Standard Protocol", "STNEAR": "Staked NEAR", "STO": "Save The Ocean", + "STOG": "Stooges", "STOGE": "Stoner Doge Finance", - "STON": "Ston", + "STOIC": "stoicDAO", + "STON": "STON", "STONE": "Stone Token", "STONK": "STONK", "STONKS": "HarryPotterObamaWallStreetBets10Inu", @@ -10681,18 +11454,24 @@ "STRONGX": "StrongX", "STRP": "Strips Finance", "STRS": "STARS", + "STRUMP": "Super Trump", "STRX": "StrikeX", "STS": "SBank", "STSOL": "Lido Staked SOL", + "STSOMM": "Stride Staked SOMM", "STSR": "SatelStar", "STSTARS": "Stride Staked Stars", "STSW": "Stackswap", "STT": "Statter Network ", + "STTAO": "Tensorplex Staked TAO", + "STTIA": "Stride Staked TIA", "STTON": "bemo staked TON", "STU": "BitJob", "STUART": "Stuart Inu", + "STUCK": "mouse in pasta", "STUD": "Studyum", "STUDENTC": "Student Coin", + "STUMEE": "Stride Staked UMEE", "STUSDT": "Staked USDT", "STV": "Sativa Coin", "STWEMIX": "Staked WEMIX", @@ -10713,6 +11492,7 @@ "SUI": "Sui", "SUIA": "SUIA", "SUIP": "SuiPad", + "SUISHIB": "SuiShiba", "SUKU": "SUKU", "SULFERC": "SULFERC", "SUM": "SumSwap", @@ -10744,7 +11524,9 @@ "SUTER": "Suterusu", "SUZUME": "Shita-kiri Suzume", "SVD": "savedroid", + "SVL": "Slash Vision Labs", "SVN": "Savanna", + "SVNN": "Savanna Haus", "SVPN": "Shadow Node", "SVS": "GivingToServices SVS", "SVT": "Solvent", @@ -10759,7 +11541,6 @@ "SWAPP": "SWAPP Protocol", "SWAPZ": "SWAPZ.app", "SWARM": "SwarmCoin", - "SWARMM": "Swarm Markets", "SWASH": "Swash", "SWAY": "Sway Social", "SWC": "Scanetchain Token", @@ -10780,6 +11561,7 @@ "SWIN": "SwinCoin", "SWING": "SwingCoin", "SWINGBY": "Swingby", + "SWIPES": "BNDR", "SWIRL": "Swirl Social", "SWIRLX": "SwirlToken", "SWISE": "StakeWise", @@ -10797,9 +11579,11 @@ "SWTH": "Carbon", "SWTS": "SWEETS", "SWU": "Smart World Union", + "SWY": "Swype", "SWYFTT": "SWYFT", "SX": "SX Network", "SXC": "SexCoin", + "SXCH": "SolarX", "SXDT": "SPECTRE Dividend Token", "SXM": "saxumdao", "SXP": "SXP", @@ -10812,14 +11596,17 @@ "SYC": "SynchroCoin", "SYL": "XSL Labs", "SYLO": "Sylo", + "SYLV": "Sylvester", "SYM": "SymVerse", "SYN": "Synapse", - "SYNC": "Sync Network", + "SYNC": "Syncus", "SYNCC": "SyncCoin", + "SYNCN": "Sync Network", "SYNCO": "Synco", "SYNLEV": "SynLev", "SYNO": "Synonym Finance", "SYNR": "MOBLAND", + "SYNT": "Synthetix Network", "SYNTH": "Synthswap", "SYNX": "Syndicate", "SYPOOL": "Sypool", @@ -10837,7 +11624,8 @@ "TADA": "Ta-da", "TAF": "TAF", "TAGR": "Think And Get Rich Coin", - "TAI": "tBridge Token", + "TAI": "TARS Protocol", + "TAIKO": "Taiko", "TAIKULA": "TAIKULA COIN", "TAIL": "Tail", "TAIYO": "Taiyo", @@ -10854,6 +11642,7 @@ "TANGYUAN": "TangYuan", "TANK": "CryptoTanks", "TANPIN": "Tanpin", + "TANUKI": "Tanuki", "TAO": "Bittensor", "TAONU": "TAO INU", "TAP": "TAP FANTASY", @@ -10863,8 +11652,10 @@ "TAPT": "Tortuga Staked Aptos", "TARA": "Taraxa", "TARAL": "TARALITY", + "TARD": "Tard", "TARI": "Tari World", "TAROT": "Tarot", + "TAROTV1": "Tarot v1", "TARP": "Totally A Rug Pull", "TAS": "TARUSH", "TASH": "Smart Trip Platform", @@ -10887,16 +11678,21 @@ "TBCC": "TBCC", "TBCI": "tbci", "TBCX": "TrashBurn", + "TBD": "THE BIG DEBATE", "TBE": "TrustBase", + "TBFT": "Türkiye Basketbol Federasyon Token", "TBIS": "TBIS token", "TBL": "Tombola", + "TBRIDGE": "tBridge Token", "TBT": "T-BOT", "TBTC": "tBTC", + "TBTCV1": "tBTC v1", "TBX": "Tokenbox", "TCANDY": "TripCandy", "TCAP": "Total Crypto Market Cap", "TCAT": "The Currency Analytics", "TCC": "The ChampCoin", + "TCG": "Today's Crypto", "TCG2": "TCG Coin 2.0", "TCGC": "TCG Verse", "TCH": "Thorecash", @@ -10913,7 +11709,9 @@ "TCX": "T-Coin", "TCY": "The Crypto You", "TD": "Trade Chain", + "TDAN": "TDAN", "TDE": "Trade Ecology Token", + "TDEFI": "Token Teknoloji A.S. Token DeFi", "TDFB": "TDFB", "TDFY": "Tidefi", "TDP": "TrueDeck", @@ -10931,6 +11729,7 @@ "TEDDYV1": "Teddy Doge", "TEE": "Guarantee", "TEER": "Integritee", + "TEITEI": "TeiTei", "TEK": "TekCoin", "TEL": "Telcoin", "TELE": "Miracle Tele", @@ -10942,6 +11741,7 @@ "TEM": "Temtum", "TEMCO": "TEMCO", "TEMP": "Tempus", + "TEMPLE": "TempleDAO", "TEN": "Tokenomy", "TEND": "Tendies", "TENDIE": "TendieSwap", @@ -10959,7 +11759,9 @@ "TERAWATT": "Terawatt", "TERN": "Ternio", "TERN.ETH": "Ternio ERC20", - "TERRA": "TERRABYTE AI", + "TERR": "Terrier", + "TERRA": "Terraport", + "TERRAB": "TERRABYTE AI", "TERZ": "SHELTERZ", "TES": "TeslaCoin", "TESLA": "TeslaCoilCoin", @@ -10971,6 +11773,7 @@ "TETHYS": "Tethys", "TETRA": "Tetra", "TETU": "TETU", + "TEW": "Trump in a memes world", "TFBX": "Truefeedback Token", "TFC": "The Freedom Coin", "TFI": "TrustFi Network Token", @@ -10995,6 +11798,7 @@ "THECA": "Theca", "THECITADEL": "The Citadel", "THEDAO": "The DAO", + "THEHARAMBE": "Harambe", "THEMIS": "Themis", "THEN": "THENA", "THEO": "Theopetra", @@ -11065,6 +11869,7 @@ "TIUSD": "TiUSD", "TIX": "Blocktix", "TKA": "Tokia", + "TKAI": "TAIKAI", "TKB": "TokenBot", "TKC": "TurkeyChain", "TKG": "Takamaka Green Coin", @@ -11086,15 +11891,19 @@ "TLOS": "Telos", "TLP": "TulipCoin", "TLW": "TILWIKI", + "TMANIA": "Trump Mania", "TME": "Timereum", "TMED": "MDsquare", + "TMFT": "Turkish Motorcycle Federation", "TMN": "TranslateMe", "TMNG": "TMN Global", "TMNT": "TMNT", "TMON": "Two Monkey Juice Bar", "TMRW": "TMRW Coin", + "TMSH": "Bursaspor Fan Token", "TMT": "Tamy Token", "TMTG": "The Midas Touch Gold", + "TMWH": "Tom Wif Hat", "TN": "TurtleNetwork", "TNB": "Time New Bank", "TNC": "TNC Coin", @@ -11106,8 +11915,11 @@ "TOA": "TOA Coin", "TOAD": "TOAD", "TOB": "Tom On Base", + "TOBI": "MOTO DOG", + "TOBY": "toby", "TOC": "TouchCon", "TODAY": "TodayCoin", + "TODD": "TURBO TODD", "TOK": "Tokenplace", "TOKA": "Tonka Finance", "TOKAU": "Tokyo AU", @@ -11115,6 +11927,7 @@ "TOKE": "Tokemak", "TOKEN": "TokenFi", "TOKENSTARS": "TokenStars", + "TOKERO": "TOKERO LevelUP Token", "TOKKI": "CRYPTOKKI", "TOKO": "ToKoin", "TOKU": "TokugawaCoin", @@ -11170,6 +11983,7 @@ "TOWER": "Tower", "TOWN": "Town Star", "TOX": "INTOverse", + "TOXI": "ToxicGarden.finance SEED", "TOYBOX": "Memefi Toybox 404", "TOZ": "Tozex", "TP": "Token Swap", @@ -11188,10 +12002,13 @@ "TRA": "Trabzonspor Fan Token", "TRAC": "OriginTrail", "TRACE": "Trace Network Labs", + "TRACEA": "Trace AI", "TRACN": "trac (Ordinals)", "TRADE": "Polytrade", + "TRADEBOT": "TradeBot", "TRADEX": "TradeX AI", "TRAID": "Traid", + "TRAIN": "Trump Train", "TRAK": "TrakInvest", "TRANQ": "Tranquil Finance", "TRANS": "Trans Pepe", @@ -11214,7 +12031,7 @@ "TRECENTO": "Trecento Blockchain Capital", "TREE": "HyperionX", "TREEB": "Retreeb", - "TREMP": "MEGE", + "TREMP": "Doland Tremp", "TRESTLE": "TRESTLE", "TRET": "Tourist Review", "TRG": "The Rug Game", @@ -11237,6 +12054,7 @@ "TRL": "Triall", "TRMX": "TourismX Token", "TRNDZ": "Trendsy", + "TROG": "Trog", "TROLL": "Trollcoin", "TROLLHEIM": "Trollheim", "TROLLMODE": "TROLL MODE", @@ -11256,17 +12074,27 @@ "TRUE": "True Chain", "TRUEBIT": "Truebit Protocol", "TRUF": "Truflation", + "TRUM": "TrumpBucks", + "TRUMAGA": "TrumpMAGA", + "TRUMATIC": "TruFin Staked MATIC", "TRUMP": "MAGA", "TRUMP2024": "Donald Trump", "TRUMPARMY": "Trump Army", + "TRUMPBIDEN": "Trump vs Biden", "TRUMPCAT": "TRUMPCAT", "TRUMPCOIN": "TrumpCoin", + "TRUMPDO": "TRUMP", "TRUMPDOGE": "Trump Doge", + "TRUMPE": "Trump Pepe", "TRUMPEPE": "Trump Pepe", + "TRUMPHAT": "Trump Hat", "TRUMPINU": "Trump Inu", "TRUMPJR": "TrumpJr", "TRUMPSHIBA": "Trump Shiba", "TRUMPTECH": "Trump Tech", + "TRUMPTITANS": "TrumpTitans", + "TRUMPX": "Trump X-Maga", + "TRUMPZ": "Trump Zhong", "TRUNK": "Elephant Money", "TRUST": "TrustDAO", "TRUSTNFT": "TrustNFT", @@ -11278,6 +12106,7 @@ "TRX": "TRON", "TRXC": "TRONCLASSIC", "TRXDICE": "TRONdice", + "TRXS": "Staked TRX", "TRXWIN": "TronWin", "TRYB": "BiLira", "TRYC": "TRYC", @@ -11301,6 +12130,7 @@ "TSX": "TradeStars", "TT": "ThunderCore", "TTC": "TTC PROTOCOL", + "TTF": "TurboTrix Finance", "TTK": "The Three Kingdoms", "TTM": "To The Moon", "TTN": "Titan Coin", @@ -11308,6 +12138,7 @@ "TTU": "TaTaTu", "TTV": "TV-TWO", "TUBE": "BitTube", + "TUBES": "TUBES", "TUCKER": "TUCKER CARLSON", "TUDA": "Tutor's Diary", "TUF": "TUF Token", @@ -11319,10 +12150,14 @@ "TUR": "Turron", "TURBO": "Turbo Wallet", "TURBOS": "Turbos Finance", + "TURBOT": "Turbo", "TURT": "TurtSat", "TUS": "Treasure Under Sea", "TUSD": "True USD", + "TUSDV1": "True USD v1", "TUT": "Tutellus", + "TUTTER": "Tutter", + "TUZKI": "Tuzki", "TUZLA": "Tuzlaspor Token", "TVK": "Terra Virtua Kolect", "TVNT": "TravelNote", @@ -11334,11 +12169,13 @@ "TWEETY": "Tweety", "TWELVE": "TWELVE ZODIAC", "TWEP": "The Web3 Project", + "TWIFB": "TrumpWifBiden", "TWIN": "Twinci", "TWIST": "TwisterCoin", "TWLV": "Twelve Coin", "TWOCAT": "TwoTalkingCats", "TWOGE": "Twoge Inu", + "TWP": "TrumpWifPanda", "TWT": "Trust Wallet Token", "TX": "Tradix", "TX20": "Trex20", @@ -11349,12 +12186,14 @@ "TXG": "TRUSTxGAMING", "TXL": "Autobahn Network", "TXT": "TuneTrade", + "TYBENG": "TYBENG", "TYBG": "Base God", "TYBGSc": "Base Goddess", "TYC": "Tycoon", "TYCOON": "CryptoTycoon", "TYOGHOUL": "TYO GHOUL", - "TYPE": "Typerium", + "TYPE": "TypeAI", + "TYPERIUM": "Typerium", "TYRANT": "Fable Of The Dragon", "TYRION": "Tyrion", "TYT": "Tianya Token", @@ -11363,13 +12202,16 @@ "U": "Unidef", "U8D": "Universal Dollar", "UAEC": "United Arab Emirates Coin", + "UAHG": "UAHg", "UAT": "UltrAlpha", + "UB": "UBit Token", "UBA": "Unbox.Art", "UBC": "Ubcoin", "UBDN": "UBD Network", "UBEX": "Ubex", "UBI": "Universal Basic Income", "UBIQ": "Ubiqoin", + "UBIT": "UBIT", "UBQ": "Ubiq", "UBT": "UniBright", "UBTC": "UnitedBitcoin", @@ -11390,8 +12232,10 @@ "UCOIN": "Ucoin", "UCON": "YouCoin Metaverse", "UCORE": "UnityCore Protocol", + "UCR": "Ultra Clear", "UCT": "UnitedCrowd", "UCX": "UCX", + "UDAO": "UDAO", "UDO": "Unido", "UDOO": "Hyprr", "UDS": "Undeads Games", @@ -11422,12 +12266,15 @@ "UIS": "Unitus", "UJENNY": "Jenny Metaverse DAO Token", "UKG": "UnikoinGold", + "ULD": "Unlighted", "ULT": "Ultiledger", "ULTC": "Umbrella", "ULTGG": "UltimoGG", + "ULTI": "Ultiverse", "ULTIMA": "Ultima", "ULTIMATEBOT": "Ultimate Tipbot", "ULTRA": "Ultra", + "ULTRAP": "ULTRA Prisma Finance", "ULX": "ULTRON", "UM": "UncleMine", "UMA": "UMA", @@ -11478,6 +12325,7 @@ "UNITY": "SuperNET", "UNIVRS": "Universe", "UNIX": "UniX", + "UNIXCOIN": "UNIX", "UNLEASH": "UnleashClub", "UNM": "UNIUM", "UNMD": "Utility Nexusmind", @@ -11531,6 +12379,7 @@ "USDAP": "Bond Appetite USD", "USDB": "USD Bancor", "USDBC": "Bridged USDC", + "USDBLAST": "USDB Blast", "USDC": "USD Coin", "USDCASH": "USDCASH", "USDD": "USDD", @@ -11547,6 +12396,7 @@ "USDN": "Neutrino USD", "USDO": "USD Open Dollar", "USDP": "Pax Dollar", + "USDPLUS": "Overnight.fi USD+", "USDQ": "USDQ", "USDR": "Real USD", "USDS": "StableUSD", @@ -11592,11 +12442,13 @@ "UTT": "United Traders Token", "UTU": "UTU Protocol", "UTX": "UTIX", + "UTYAB": "Utya Black", "UUSD": "Utopia USD", "UUU": "U Network", "UVT": "UvToken", "UW3S": "Utility Web3Shot", - "UWU": "uwu", + "UWU": "UwU Lend", + "UWUCOIN": "uwu", "UX": "Umee", "UXOS": "UXOS", "UXP": "UXD Protocol", @@ -11653,6 +12505,7 @@ "VCNT": "ViciCoin", "VCORE": "VCORE", "VCX": "VaultCraft", + "VDA": "Verida", "VDG": "VeriDocGlobal", "VDL": "Vidulum", "VDO": "VidioCoin", @@ -11665,12 +12518,14 @@ "VDZ": "Voidz", "VEC": "VECTOR", "VEC2": "VectorCoin 2.0", + "VECT": "Vectorium", "VEE": "BLOCKv", "VEED": "VEED", "VEEN": "LIVEEN", "VEG": "BitVegan", "VEGA": "Vega Protocol", "VEGAS": "Vegasino", + "VEGASI": "Vegas Inu Token", "VEGE": "Vege Token", "VEIL": "VEIL", "VEKTOR": "VEKTOR", @@ -11694,6 +12549,7 @@ "VERA": "Vera", "VERI": "Veritaseum", "VERIC": "VeriCoin", + "VERO": "VEROPAD", "VERSA": "Versa Token", "VERSACE": "VERSACE", "VERSE": "Verse", @@ -11725,6 +12581,7 @@ "VICA": "ViCA Token", "VICEX": "ViceToken", "VICS": "RoboF", + "VICT": "Victory Impact Coin", "VICTORIUM": "Victorium", "VID": "VideoCoin", "VIDA": "Vidiachange", @@ -11749,6 +12606,7 @@ "VIRES": "Vires Finance", "VIRTU": "VIRTUCLOUD", "VIRTUAL": "Virtual Protocol", + "VIRTUM": "VIRTUMATE", "VIS": "Vigorus", "VISIO": "Visio", "VISION": "VisionGame", @@ -11765,6 +12623,7 @@ "VIVID": "Vivid Coin", "VIVO": "VIVO Coin", "VIX": "VIXCO", + "VIXV1": "VIXCO v1", "VIZ": "Vision City", "VIZION": "ViZion Protocol", "VIZSLASWAP": "VizslaSwap", @@ -11812,6 +12671,7 @@ "VOLTV1": "Volt Inu v1", "VOLTV2": "Volt Inu v2", "VOLTZ": "Voltz", + "VOLX": "VolumeX", "VONE": "Vone", "VONSPEED": "Andrea Von Speed", "VOOT": "VootCoin", @@ -11829,6 +12689,7 @@ "VPP": "Virtue Poker Points", "VPR": "VaporWallet", "VPRC": "VapersCoin", + "VPS": "VPS AI", "VR": "Victoria", "VRA": "Verasity", "VRC": "Virtual Coin", @@ -11855,6 +12716,7 @@ "VSHARE": "V3S Share", "VSL": "vSlice", "VSO": "Verso", + "VSOL": "VSolidus", "VSP": "Vesper Finance", "VSTA": "Vesta Finance", "VSUI": "Volo Staked SUI", @@ -11868,7 +12730,9 @@ "VTM": "Victorieum", "VTN": "Voltroon", "VTOS": "VTOS", + "VTRA": " E.C. Vitoria Fan Token", "VTRO": "Vitruveo DEX", + "VTRUMP": "Vote Trump", "VTRX": "Venus TRX", "VTS": "Veritise", "VTU": "Virtu", @@ -11902,12 +12766,15 @@ "W8BIT": "8Bit Chain", "WAB": "WABnetwork", "WABI": "WABI", + "WACME": "Wrapped Accumulate", "WACO": "Waste Digital Coin", "WAD": "WardenSwap", "WADA": "Wrapped Cardano", + "WAFFLES": "Waffles Davincij15's Cat", "WAG": "WagyuSwap", "WAGE": "Digiwage", "WAGG": "Waggle Network", + "WAGIE": "Wagie", "WAGIEBOT": "Wagie Bot", "WAGMI": "Wagmi Coin", "WAGMIGAMES": "WAGMI Game", @@ -11921,6 +12788,7 @@ "WALK": "Walk Token", "WALLET": "Ambire Wallet", "WALLY": "Wally Bot", + "WALTER": "walter", "WALV": "Alvey Chain", "WAM": "Wam", "WAMPL": "Wrapped Ampleforth", @@ -11942,12 +12810,15 @@ "WASH": "WashingtonCoin", "WASSIE": "WASSIE", "WASTR": "Wrapped Astar", + "WAT": "Wat", "WATER": "doginwotah", + "WAVAX": "Wrapped AVAX", "WAVES": "Waves", "WAXE": "WAXE", "WAXL": "Wrapped Axelar", "WAXP": "Worldwide Asset eXchange", "WAY": "WayCoin", + "WAZ": "MikeAI", "WBB": "Wild Beast Coin", "WBBC": "Wibcoin", "WBCH": "Wrapped Bitcoin Cash", @@ -11955,6 +12826,7 @@ "WBET": "Wavesbet", "WBETH": "Wrapped Beacon ETH", "WBIND": "Wrapped BIND", + "WBLT": "Wrapped BMX Liquidity Token", "WBN": "Wisdom Bank Network", "WBNB": "Wrapped BNB", "WBOND": "War Bond Token", @@ -12006,9 +12878,12 @@ "WECO": "WECOIN", "WED": "Wednesday Inu", "WEETH": "Wrapped eETH", + "WEF": "DOG WIF CHINESE HAT", "WEFI": "WeFi", "WEGEN": "WeGen Platform", + "WEGI": "Wegie", "WEGLD": "Wrapped EGLD", + "WEIRDO": "Weirdo", "WELA": "Wrapped Elastos", "WELD": "Weld", "WELL": "Moonwell", @@ -12017,6 +12892,7 @@ "WELT": "Fabwelt", "WELUPS": "Welups Blockchain", "WEMIX": "WEMIX", + "WEMIXUSD": "WEMIX", "WEN": "Wen", "WENLAMBO": "Wenlambo", "WEOS": "Wrapped EOS", @@ -12032,11 +12908,13 @@ "WEXO": "Wexo", "WEXPOLY": "WaultSwap Polygon", "WFAI": "WaifuAI", + "WFBTC": "Wrapped Fantom Bitcoin", "WFIL": "Wrapped Filecoin", "WFLAMA": "WIFLAMA", "WFLOW": "Wrapped Flow", "WFO": "WoofOracle", "WFT": "Windfall Token", + "WFTN": "Wrapped FTN", "WFUSE": "Wrapped Fuse", "WFX": "WebFlix", "WGC": "Green Climate World", @@ -12057,6 +12935,8 @@ "WHEN": "WhenHub", "WHEX": "Whale Exploder", "WHIRL": "Whirl Finance", + "WHISK": "Whiskers", + "WHISKEY": "WHISKEY", "WHITE": "Whiteheart", "WHL": "WhaleCoin", "WHO": "Truwho", @@ -12069,8 +12949,12 @@ "WIC": "Wi Coin", "WICC": "WaykiChain", "WIF": "dogwifhat", + "WIF2": "DogWif2.0", + "WIFB": "dogwifball", + "WIFE": "Wifejak", "WIFEDOGE": "Wifedoge", - "WIFI": "Wifi Coin", + "WIFI": "WiFi Map", + "WIFICOIN": "Wifi Coin", "WIFS": "dogwifscarf", "WIFSA": "dogwifsaudihat", "WIGO": "WigoSwap", @@ -12103,6 +12987,8 @@ "WITCH": "Witch", "WITCOIN": "Witcoin", "WIX": "Wixlar", + "WIZA": "Wizardia", + "WJD": "WJD", "WJEWEL": "WJEWEL", "WJXN": "Jax.Network", "WKAI": "Wrapped KardiaChain", @@ -12116,6 +13002,7 @@ "WLK": "Wolk", "WLKN": "Walken", "WLO": "WOLLO", + "WLTH": "Common Wealth", "WLUNA": "Wrapped LUNA Token", "WLUNC": "Wrapped LUNA Classic", "WLXT": "Wallex Token", @@ -12125,6 +13012,7 @@ "WMEMO": "Wonderful Memories", "WMF": "Whale Maker Fund", "WMINIMA": "Wrapped Minima", + "WMLX": "Millix", "WMN": "WebMind Network", "WMNT": "Wrapped Mantle", "WMOXY": "Moxy", @@ -12140,6 +13028,7 @@ "WNET": "Wavesnode.net", "WNK": "The Winkyverse", "WNOW": "WalletNow", + "WNRG": "Wrapped-Energi", "WNRZ": "WinPlay", "WNT": "Wicrypt", "WNXM": "Wrapped NXM", @@ -12153,11 +13042,13 @@ "WOJ": "Wojak Finance", "WOJAK": "Wojak", "WOJAK2": "Wojak 2.0 Coin", + "WOKB": "Wrapped OKB", "WOKT": "Wrapped OKT", "WOL": "World of Legends", "WOLF": "Landwolf", "WOLFILAND": "Wolfiland", "WOLFOF": "Wolf of Wall Street", + "WOLFP": "Wolfpack Coin", "WOLFY": "WOLFY", "WOLVERINU": "WOLVERINU", "WOM": "WOM", @@ -12200,6 +13091,7 @@ "WQT": "Work Quest", "WRC": "Worldcore", "WRK": "BlockWRK", + "WRKX": "NFT Workx", "WRLD": "NFT Worlds", "WRONG": "The Wrong Token", "WROSE": "Wrapped Rose", @@ -12209,10 +13101,13 @@ "WRZ": "Weriz", "WSB": "WallStreetBets DApp", "WSBABY": "Wall Street Baby", + "WSBC": "WSB Coin", "WSBS": "Wall Street Bets Solana", "WSCRT": "Secret ERC20", + "WSDM": "Wisdomise AI", "WSDOGE": "Doge of Woof Street", "WSG": "Wall Street Games", + "WSGV1": "Wall Street Games v1", "WSHIB": "wShiba", "WSI": "WeSendit", "WSIENNA": "Sienna ERC20", @@ -12239,7 +13134,9 @@ "WTT": "Giga Watt", "WTWOOL": "Wolf Town Wool", "WUF": "WUFFI", + "WUSD": "Worldwide USD", "WUST": "Wrapped UST Token", + "WVTRS": "Vitreus", "WW3": "WW3", "WWAN": "Wrapped WAN", "WWB": "Wowbit", @@ -12260,7 +13157,7 @@ "WZENIQ": "Wrapped Zeniq (ETH)", "WZETA": "Wrapped Zeta", "WZM": "Woozoo Music", - "WZRD": "Wizardia", + "WZRD": "Bitcoin Wizards", "X": "AI-X", "X2": "X2Coin", "X2Y2": "X2Y2", @@ -12274,6 +13171,7 @@ "XAH": "Xahau", "XAI": "Xai", "XALGO": "Wrapped ALGO", + "XALPHA": "XAlpha AI", "XAMP": "Antiample", "XANK": "Xank", "XAP": "Apollon", @@ -12285,6 +13183,7 @@ "XAUT": "Tether Gold", "XAVA": "Avalaunch", "XAYA": "XAYA", + "XB": "XBANKING", "XBASE": "ETERBASE", "XBB": "BrickBlock", "XBC": "BitcoinPlus", @@ -12292,6 +13191,7 @@ "XBG": "BitGrin", "XBI": "Bitcoin Incognito", "XBL": "Billionaire Token", + "XBLAZE": "Trailblaze", "XBN": "Elastic BNB", "XBNB": "PhoenixBNB", "XBOND": "Bitacium", @@ -12309,6 +13209,7 @@ "XCAL": "3xcalibur", "XCASH": "X-CASH", "XCASTR": "Astar", + "XCB": "Crypto Birds", "XCDOT": "xcDOT", "XCE": "Cerium", "XCEL": "XcelTrip", @@ -12370,11 +13271,13 @@ "XETA": "Xana", "XETH": "Xplosive Ethereum", "XFC": "Football Coin", - "XFI": "Xfinance", + "XFI": "CrossFi", + "XFINANCE": "Xfinance", "XFIT": "Xfit", "XFLOKI": "XFLOKI", "XFT": "Fantasy Cash", "XFTC": "Offshift", + "XFUEL": "XFUEL", "XFUND": "xFund", "XFYI": "XCredit", "XG": "XG Sports", @@ -12389,6 +13292,7 @@ "XGRO": "Growth DeFi", "XGT": "Xion Finance", "XHI": "HiCoin", + "XHP": "XHYPE", "XHT": "HollaEx", "XHV": "Haven Protocol", "XI": "Xi", @@ -12417,6 +13321,7 @@ "XLQ": "Alqo", "XLR": "Solaris", "XLT": "Nexalt", + "XM": "xMooney", "XMARK": "xMARK", "XMAS": "Elon Xmas", "XMASGROK": "Xmas Grok", @@ -12444,6 +13349,7 @@ "XNL": "Chronicle", "XNN": "Xenon", "XNO": "Xeno Token", + "XNODE": "XNODE", "XNP": "ExenPay Token", "XNS": "Insolar", "XNT": "Exenium", @@ -12506,10 +13412,12 @@ "XRP": "XRP", "XRP2": "XRP2.0", "XRP20": "XRP20", + "XRP8": "HarryPotterObamaPacMan8Inu", "XRPAYNET": "XRPayNet", "XRPC": "Xrp Classic", "XRPCHAIN": "Ripple Chain", "XRPH": "XRP Healthcare", + "XRS": "Xrius", "XRT": "Robonomics Network", "XRUN": "XRun", "XRUNE": "Thorstarter", @@ -12549,8 +13457,11 @@ "XTRA": "ExtraCredit", "XTRACK": "Xtrack AI", "XTREME": "ExtremeCoin", + "XTRM": "XTRM COIN", + "XTT": "XSwap Treasure", "XTTB20": "XTblock", "XTUSD": "XT Stablecoin XTUSD", + "XTV": "XTV", "XTX": "Xtock", "XTZ": "Tezos", "XUC": "Exchange Union", @@ -12583,6 +13494,7 @@ "YACHT": "YachtingVerse", "YAE": "Cryptonovae", "YAG": "Yaki Gold", + "YAI": "Ÿ", "YAK": "Yield Yak", "YAKS": "YakDAO", "YAKU": "Yaku", @@ -12603,19 +13515,22 @@ "YCE": "MYCE", "YCO": "Y Coin", "YCT": "Youclout", + "YDA": "YadaCoin", "YDF": "Yieldification", "YDOGE": "Yorkie Doge", "YDR": "YDragon", "YEC": "Ycash", "YEE": "Yeeco", "YEED": "Yggdrash", + "YEEHAW": "YEEHAW", "YEFI": "YeFi", "YEL": "Yel.Finance", "YEON": "Yeon", "YEPE": "Yellow Pepe", - "YES": "Yes World", + "YES": "YES Money", "YESCOIN": "YesCoin", "YESP": "Yesports", + "YESW": "Yes World", "YETI": "Yeti Finance", "YETU": "Yetucoin", "YFARM": "YFARM Token", @@ -12672,6 +13587,7 @@ "YSEC": "Yearn Secure", "YSR": "Ystar", "YTA": "YottaChain", + "YTJIA": "Jia Yueting", "YTN": "YENTEN", "YTS": "YetiSwap", "YU": "BOUNTYKINDS", @@ -12697,6 +13613,7 @@ "YYFI": "YYFI.Protocol", "Z3": "Z-Cubed", "ZABAKU": "Zabaku Inu", + "ZACK": "Zack Morris", "ZAFI": "ZakumiFi", "ZAI": "Zero Collateral Dai", "ZAIF": "Zaif Token", @@ -12705,17 +13622,20 @@ "ZANO": "Zano", "ZAO": "zkTAO", "ZAP": "Zap", + "ZAPI": "Zapicorn", "ZARP": "ZARP Stablecoin", "ZARX": "eToro South African Rand", "ZASH": "ZIMBOCASH", "ZAT": "ZatGo", "ZB": "ZB", "ZBC": "Zebec Protocol", + "ZBCN": "Zebec Network", "ZBIT": "zbit", "ZBU": "Zeebu", "ZCC": "ZCC Coin", "ZCC1": "ZeroCarbon", "ZCG": "ZCashGOLD", + "ZCHF": "Frankencoin", "ZCHN": "Zichain", "ZCL": "ZClassic", "ZCN": "Züs", @@ -12725,12 +13645,14 @@ "ZCR": "ZCore", "ZCULT": "Zkcult", "ZCX": "Unizen", + "ZDAI": "Zydio AI", "ZDEX": "Zeedex", "ZDR": "Zloadr", "ZEBU": "ZEBU", "ZEC": "ZCash", "ZECD": "ZCashDarkCoin", "ZED": "ZedCoins", + "ZEDD": "ZedDex", "ZEDTOKEN": "Zed Token", "ZEDX": "ZEDXION", "ZEDXION": "Zedxion", @@ -12739,7 +13661,7 @@ "ZEFU": "Zenfuse", "ZEIT": "ZeitCoin", "ZEL": "Zelcash", - "ZELIX ": "ZELIX", + "ZELIX": "ZELIX", "ZEN": "Horizen", "ZENC": "Zenc Coin", "ZEND": "zkLend", @@ -12747,18 +13669,20 @@ "ZENI": "Zennies", "ZENIQ": "Zeniq Coin", "ZENITH": "Zenith Chain", + "ZENT": "Zentry", "ZEON": "Zeon Network", "ZEP": "Zeppelin Dao", "ZEPH": "Zephyr Protocol", "ZER": "Zero", - "ZERO": "Analysoor", "ZEROB": "ZeroBank", "ZEROEX": "0.exchange", "ZES": "Zetos", + "ZESH": "Zesh", "ZEST": "ZestCoin", "ZET": "ZetaCoin", "ZET2": "Zeta2Coin", "ZETA": "ZetaChain", + "ZETH": "Zethan", "ZETRIX": "Zetrix", "ZEUM": "Colizeum", "ZEUS": "Zeus Network", @@ -12769,8 +13693,12 @@ "ZFM": "ZFMCOIN", "ZGD": "ZambesiGold", "ZGEM": "GemSwap", + "ZHC": "ZHC : Zero Hour Cash", + "ZIBU": "Zibu", "ZIG": "Zignaly", + "ZIGAP": "ZIGAP", "ZIK": "Ziktalk", + "ZIKC": "Zik coin", "ZIL": "Zilliqa", "ZILBERCOIN": "Zilbercoin", "ZILLIONXO": "ZILLION AAKAR XO", @@ -12778,19 +13706,30 @@ "ZINC": "ZINC", "ZINU": "Zombie Inu", "ZIP": "Zipper", + "ZIPPYSOL": "Zippy Staked SOL", "ZIPT": "Zippie", "ZIRVE": "Zirve Coin", + "ZIV4": "Ziv4 Labs", "ZIX": "ZIX Token", + "ZIZLE": "Zizle", "ZIZY": "ZIZY", "ZJLT": "ZJLT Distributed Factoring Network", - "ZK": "Polyhedra Network", + "ZJOE": "zJOE", + "ZK": "zkSync", "ZKARCH": "zkArchive", "ZKB": "ZKBase", "ZKBOB": "BOB", "ZKDOGE": "zkDoge", + "ZKDX": "ZKDX", + "ZKE": "zkEra Finance", + "ZKEVM": "zkEVMChain (BSC)", "ZKF": "ZKFair", + "ZKGROK": "ZKGROK", + "ZKGUN": "zkGUN", "ZKHIVE": "zkHive", "ZKID": "zkSync id", + "ZKIN": "zkInfra", + "ZKJ": "Polyhedra Network", "ZKLAB": "zkSync Labs", "ZKLK": "ZkLock", "ZKML": "zKML", @@ -12802,11 +13741,13 @@ "ZKSP": "zkSwap", "ZKT": "zkTube", "ZKVAULT": "zkVAULT", + "ZKX": "ZKX", "ZKZ": "Zkzone", "ZLA": "Zilla", "ZLDA": "Zelda Inu", "ZLK": "Zenlink Network", "ZLOT": "zLOT Finance", + "ZLP": "ZilPay Wallet", "ZLQ": "ZLiteQubit", "ZLW": "Zelwin", "ZMBE": "RugZombie", @@ -12828,26 +13769,31 @@ "ZONO": "Zono Swap", "ZONX": "METAZONX", "ZOO": "ZooKeeper", + "ZOOA": "Zoopia", "ZOOM": "ZoomCoin", "ZOOMER": "Zoomer Coin", "ZOON": "CryptoZoon", "ZOOT": "Zoo Token", "ZORA": "Zoracles", + "ZORKSEES": "Zorksees", "ZORO": "Zoro Inu", "ZORT": "Zort", "ZP": "Zen Protocol", "ZPAE": "ZelaaPayAE", "ZPAY": "ZoidPay", "ZPC": "Zen Panda Coin", + "ZPET": "Zino Pet", "ZPR": "ZPER", "ZPRO": "ZAT Project", "ZPT": "Zeepin", "ZPTC": "Zeptacoin", "ZRC": "ZrCoin", - "ZRO": "Protocol Zero", + "ZRO": "LayerZero", "ZRX": "0x", "ZSC": "Zeusshield", + "ZSD": "Zephyr Protocol Stable Dollar", "ZSE": "ZSEcoin", + "ZSH": "Ziesha", "ZT": "ZBG Token", "ZTC": "ZeTo", "ZTG": "Zeitgeist", @@ -12857,11 +13803,14 @@ "ZUKI": "Zuki Moba", "ZUM": "ZumCoin", "ZUNA": "ZUNA", + "ZUNUSD": "Zunami USD", "ZUR": "Zurcoin", "ZURR": "ZURRENCY", "ZUSD": "ZUSD", + "ZUSHI": "ZUSHI", "ZUT": "Zero Utility Token", "ZUZALU": "Zuzalu Inu", + "ZUZU": "ZUZU", "ZUZUAI": "ZUZUAI", "ZVC": "ZVCHAIN", "ZWAP": "ZilSwap", @@ -12869,6 +13818,7 @@ "ZXT": "Zcrypt", "ZYD": "ZayedCoin", "ZYN": "Zynecoin", + "ZYNE": "Zynergy", "ZYPTO": "Zypto Token", "ZYR": "Zyrri", "ZYRO": "Zyro", diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index f02c80fc7..860024c61 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -4,6 +4,12 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> + https://ghostfol.io/de ${currentDate}T00:00:00+00:00 @@ -54,218 +60,6 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools ${currentDate}T00:00:00+00:00 - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-8figures - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-allinvestview - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-allvue-systems - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-altoo - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-basil-finance - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-beanvest - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-capitally - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-capmon - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-compound-planning - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-copilot-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-de.fi - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-delta - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-divvydiary - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-empower - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-exirio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-fina - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-finary - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-finwise - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-folishare - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-getquin - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-gospatz - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-intuit-mint - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-justetf - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-kubera - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-magnifi - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-markets.sh - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-maybe-finance - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-monarch-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-monse - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-parqet - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-plannix - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-portfolio-dividend-tracker - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-portfolio-visualizer - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-portseido - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-projectionlab - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-rocket-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-seeking-alpha - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-sharesight - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-simple-portfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-snowball-analytics - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-stock-events - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-stockle - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-stockmarketeye - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-sumio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-tiller - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-utluna - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-vyzer - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-wallmine - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-wealthfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-wealthica - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-whal - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-yeekatee - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-ynab - ${currentDate}T00:00:00+00:00 - https://ghostfol.io/de/ueber-uns ${currentDate}T00:00:00+00:00 @@ -421,901 +215,277 @@ ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-8figures - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-allinvestview - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-allvue-systems + https://ghostfol.io/es ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-altoo + https://ghostfol.io/es/funcionalidades ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-basil-finance + https://ghostfol.io/es/mercados + daily ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-beanvest + https://ghostfol.io/es/open + daily ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-capitally + https://ghostfol.io/es/precios ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-capmon + https://ghostfol.io/es/preguntas-mas-frecuentes ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-compound-planning + https://ghostfol.io/es/recursos ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-copilot-money + https://ghostfol.io/es/recursos/personal-finance-tools ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-de.fi + https://ghostfol.io/es/registro ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-delta + https://ghostfol.io/es/sobre ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-divvydiary + https://ghostfol.io/es/sobre/changelog ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-empower + https://ghostfol.io/es/sobre/licencia ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-exirio + https://ghostfol.io/es/sobre/oss-friends ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-fina + https://ghostfol.io/es/sobre/politica-de-privacidad ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-finary + https://ghostfol.io/fr ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-finwise + https://ghostfol.io/fr/a-propos ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-folishare + https://ghostfol.io/fr/a-propos/changelog ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-getquin + https://ghostfol.io/fr/a-propos/licence ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-gospatz + https://ghostfol.io/fr/a-propos/oss-friends ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-intuit-mint + https://ghostfol.io/fr/a-propos/politique-de-confidentialite ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-justetf + https://ghostfol.io/fr/enregistrement ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-kubera + https://ghostfol.io/fr/fonctionnalites ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-magnifi + https://ghostfol.io/fr/foire-aux-questions ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-markets.sh + https://ghostfol.io/fr/marches + daily ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-maybe-finance + https://ghostfol.io/fr/open + daily ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-monarch-money + https://ghostfol.io/fr/prix ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-monse + https://ghostfol.io/fr/ressources ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-parqet + https://ghostfol.io/fr/ressources/personal-finance-tools ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-plannix + https://ghostfol.io/it ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-portfolio-dividend-tracker + https://ghostfol.io/it/domande-piu-frequenti ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-portfolio-visualizer + https://ghostfol.io/it/funzionalita ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-portseido + https://ghostfol.io/it/informazioni-su ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-projectionlab + https://ghostfol.io/it/informazioni-su/changelog ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-rocket-money + https://ghostfol.io/it/informazioni-su/informativa-sulla-privacy ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-seeking-alpha + https://ghostfol.io/it/informazioni-su/licenza ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-sharesight + https://ghostfol.io/it/informazioni-su/oss-friends ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-simple-portfolio + https://ghostfol.io/it/iscrizione ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-snowball-analytics + https://ghostfol.io/it/mercati + daily ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-stock-events + https://ghostfol.io/it/open + daily ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-stockle + https://ghostfol.io/it/prezzi ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-stockmarketeye + https://ghostfol.io/it/risorse ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-sumio + https://ghostfol.io/it/risorse/personal-finance-tools ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-tiller + https://ghostfol.io/nl ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-utluna + https://ghostfol.io/nl/bronnen ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-vyzer + https://ghostfol.io/nl/bronnen/personal-finance-tools ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-wallmine + https://ghostfol.io/nl/functionaliteiten ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-wealthfolio + https://ghostfol.io/nl/markten + daily ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-wealthica + https://ghostfol.io/nl/open + daily ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-whal + https://ghostfol.io/nl/over ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-yeekatee + https://ghostfol.io/nl/over/changelog ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-ynab + https://ghostfol.io/nl/over/licentie ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es + https://ghostfol.io/nl/over/oss-friends ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/funcionalidades + https://ghostfol.io/nl/over/privacybeleid ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/mercados - daily + https://ghostfol.io/nl/prijzen ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/open - daily + https://ghostfol.io/nl/registratie ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/precios + https://ghostfol.io/nl/veelgestelde-vragen ${currentDate}T00:00:00+00:00 + - https://ghostfol.io/es/preguntas-mas-frecuentes + https://ghostfol.io/pt ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/recursos + https://ghostfol.io/pt/blog ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/registro + https://ghostfol.io/pt/funcionalidades ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/sobre + https://ghostfol.io/pt/mercados ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/sobre/changelog + https://ghostfol.io/pt/open ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/sobre/licencia + https://ghostfol.io/pt/perguntas-mais-frequentes ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/sobre/oss-friends + https://ghostfol.io/pt/precos ${currentDate}T00:00:00+00:00 - https://ghostfol.io/es/sobre/politica-de-privacidad + https://ghostfol.io/pt/recursos ${currentDate}T00:00:00+00:00 - https://ghostfol.io/fr - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos/licence - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos/politique-de-confidentialite - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/enregistrement - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/fonctionnalites - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/foire-aux-questions - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/marches - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/prix - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/ressources - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/domande-piu-frequenti - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/funzionalita - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su/informativa-sulla-privacy - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su/licenza - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/iscrizione - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/mercati - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/prezzi - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-8figures - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-allinvestview - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-allvue-systems - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-altoo - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-basil-finance - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-beanvest - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-capitally - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-capmon - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-compound-planning - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-copilot-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-de.fi - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-delta - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-divvydiary - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-empower - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-exirio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-fina - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-finary - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-finwise - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-folishare - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-getquin - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-gospatz - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-intuit-mint - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-justetf - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-kubera - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-magnifi - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-markets.sh - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-maybe-finance - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-monarch-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-monse - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-parqet - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-plannix - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-portfolio-dividend-tracker - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-portfolio-visualizer - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-portseido - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-projectionlab - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-rocket-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-seeking-alpha - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-sharesight - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-simple-portfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-snowball-analytics - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-stock-events - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-stockle - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-stockmarketeye - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-sumio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-tiller - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-utluna - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-vyzer - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-wallmine - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-wealthfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-wealthica - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-whal - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-yeekatee - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-ynab - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-8figures - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-allinvestview - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-allvue-systems - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-altoo - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-basil-finance - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-beanvest - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-capitally - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-capmon - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-compound-planning - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-copilot-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-de.fi - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-delta - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-divvydiary - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-empower - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-exirio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-fina - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-finary - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-finwise - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-folishare - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-getquin - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-gospatz - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-intuit-mint - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-justetf - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-kubera - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-magnifi - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-markets.sh - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-maybe-finance - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-monarch-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-monse - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-parqet - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-plannix - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-portfolio-dividend-tracker - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-portfolio-visualizer - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-portseido - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-projectionlab - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-rocket-money - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-seeking-alpha - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-sharesight - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-simple-portfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-snowball-analytics - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-stock-events - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-stockle - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-stockmarketeye - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-sumio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-tiller - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-utluna - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-vyzer - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-wallmine - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-wealthfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-wealthica - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-whal - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-yeekatee - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-ynab - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/functionaliteiten - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/markten - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over/licentie - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over/privacybeleid - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/prijzen - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/registratie - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/veelgestelde-vragen - ${currentDate}T00:00:00+00:00 - - - - https://ghostfol.io/pt - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/blog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/funcionalidades - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/mercados - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/open - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/perguntas-mais-frequentes - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/precos - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/recursos + https://ghostfol.io/pt/recursos/personal-finance-tools ${currentDate}T00:00:00+00:00 @@ -1352,4 +522,5 @@ ${currentDate}T00:00:00+00:00 --> + ${personalFinanceTools} diff --git a/apps/api/src/events/portfolio-changed.listener.ts b/apps/api/src/events/portfolio-changed.listener.ts index fcf47ce6c..d12b9558d 100644 --- a/apps/api/src/events/portfolio-changed.listener.ts +++ b/apps/api/src/events/portfolio-changed.listener.ts @@ -16,10 +16,8 @@ export class PortfolioChangedListener { 'PortfolioChangedListener' ); - this.redisCacheService.remove( - this.redisCacheService.getPortfolioSnapshotKey({ - userId: event.getUserId() - }) - ); + this.redisCacheService.removePortfolioSnapshotsByUserId({ + userId: event.getUserId() + }); } } diff --git a/apps/api/src/helper/portfolio.helper.ts b/apps/api/src/helper/portfolio.helper.ts index bd9c34a3d..1248b1409 100644 --- a/apps/api/src/helper/portfolio.helper.ts +++ b/apps/api/src/helper/portfolio.helper.ts @@ -1,17 +1,4 @@ -import { resetHours } from '@ghostfolio/common/helper'; -import { DateRange } from '@ghostfolio/common/types'; - import { Type as ActivityType } from '@prisma/client'; -import { - endOfDay, - max, - subDays, - startOfMonth, - startOfWeek, - startOfYear, - subYears, - endOfYear -} from 'date-fns'; export function getFactor(activityType: ActivityType) { let factor: number; @@ -31,61 +18,3 @@ export function getFactor(activityType: ActivityType) { return factor; } - -export function getInterval( - aDateRange: DateRange, - portfolioStart = new Date(0) -) { - let endDate = endOfDay(new Date(Date.now())); - let startDate = portfolioStart; - - switch (aDateRange) { - case '1d': - startDate = max([ - startDate, - subDays(resetHours(new Date(Date.now())), 1) - ]); - break; - case 'mtd': - startDate = max([ - startDate, - subDays(startOfMonth(resetHours(new Date(Date.now()))), 1) - ]); - break; - case 'wtd': - startDate = max([ - startDate, - subDays( - startOfWeek(resetHours(new Date(Date.now())), { weekStartsOn: 1 }), - 1 - ) - ]); - break; - case 'ytd': - startDate = max([ - startDate, - subDays(startOfYear(resetHours(new Date(Date.now()))), 1) - ]); - break; - case '1y': - startDate = max([ - startDate, - subYears(resetHours(new Date(Date.now())), 1) - ]); - break; - case '5y': - startDate = max([ - startDate, - subYears(resetHours(new Date(Date.now())), 5) - ]); - break; - case 'max': - break; - default: - // '2024', '2023', '2022', etc. - endDate = endOfYear(new Date(aDateRange)); - startDate = max([startDate, new Date(aDateRange)]); - } - - return { endDate, startDate }; -} diff --git a/apps/api/src/models/rules/account-cluster-risk/current-investment.ts b/apps/api/src/models/rules/account-cluster-risk/current-investment.ts index a9a60f912..e25bb2f08 100644 --- a/apps/api/src/models/rules/account-cluster-risk/current-investment.ts +++ b/apps/api/src/models/rules/account-cluster-risk/current-investment.ts @@ -55,10 +55,10 @@ export class AccountClusterRiskCurrentInvestment extends Rule { const maxInvestmentRatio = maxItem?.investment / totalInvestment || 0; - if (maxInvestmentRatio > ruleSettings.threshold) { + if (maxInvestmentRatio > ruleSettings.thresholdMax) { return { evaluation: `Over ${ - ruleSettings.threshold * 100 + ruleSettings.thresholdMax * 100 }% of your current investment is at ${maxItem.name} (${( maxInvestmentRatio * 100 ).toPrecision(3)}%)`, @@ -70,7 +70,7 @@ export class AccountClusterRiskCurrentInvestment extends Rule { evaluation: `The major part of your current investment is at ${ maxItem.name } (${(maxInvestmentRatio * 100).toPrecision(3)}%) and does not exceed ${ - ruleSettings.threshold * 100 + ruleSettings.thresholdMax * 100 }%`, value: true }; @@ -79,13 +79,13 @@ export class AccountClusterRiskCurrentInvestment extends Rule { public getSettings(aUserSettings: UserSettings): Settings { return { baseCurrency: aUserSettings.baseCurrency, - isActive: true, - threshold: 0.5 + isActive: aUserSettings.xRayRules[this.getKey()].isActive, + thresholdMax: 0.5 }; } } interface Settings extends RuleSettings { baseCurrency: string; - threshold: number; + thresholdMax: number; } diff --git a/apps/api/src/models/rules/account-cluster-risk/single-account.ts b/apps/api/src/models/rules/account-cluster-risk/single-account.ts index a47895c13..1f61b9659 100644 --- a/apps/api/src/models/rules/account-cluster-risk/single-account.ts +++ b/apps/api/src/models/rules/account-cluster-risk/single-account.ts @@ -36,7 +36,7 @@ export class AccountClusterRiskSingleAccount extends Rule { public getSettings(aUserSettings: UserSettings): RuleSettings { return { - isActive: true + isActive: aUserSettings.xRayRules[this.getKey()].isActive }; } } diff --git a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts index 372250dbc..1258eb889 100644 --- a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts +++ b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts @@ -65,7 +65,7 @@ export class CurrencyClusterRiskBaseCurrencyCurrentInvestment extends Rule { const maxValueRatio = maxItem?.value / totalValue || 0; - if (maxValueRatio > ruleSettings.threshold) { + if (maxValueRatio > ruleSettings.thresholdMax) { return { evaluation: `Over ${ - ruleSettings.threshold * 100 + ruleSettings.thresholdMax * 100 }% of your current investment is in ${maxItem.groupKey} (${( maxValueRatio * 100 ).toPrecision(3)}%)`, @@ -56,7 +56,7 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule { evaluation: `The major part of your current investment is in ${ maxItem?.groupKey ?? ruleSettings.baseCurrency } (${(maxValueRatio * 100).toPrecision(3)}%) and does not exceed ${ - ruleSettings.threshold * 100 + ruleSettings.thresholdMax * 100 }%`, value: true }; @@ -65,13 +65,13 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule { public getSettings(aUserSettings: UserSettings): Settings { return { baseCurrency: aUserSettings.baseCurrency, - isActive: true, - threshold: 0.5 + isActive: aUserSettings.xRayRules[this.getKey()].isActive, + thresholdMax: 0.5 }; } } interface Settings extends RuleSettings { baseCurrency: string; - threshold: number; + thresholdMax: number; } diff --git a/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts b/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts index 20e9502bf..0ba7a109c 100644 --- a/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts +++ b/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts @@ -19,29 +19,29 @@ export class EmergencyFundSetup extends Rule { } public evaluate(ruleSettings: Settings) { - if (this.emergencyFund > ruleSettings.threshold) { + if (this.emergencyFund < ruleSettings.thresholdMin) { return { - evaluation: 'An emergency fund has been set up', - value: true + evaluation: 'No emergency fund has been set up', + value: false }; } return { - evaluation: 'No emergency fund has been set up', - value: false + evaluation: 'An emergency fund has been set up', + value: true }; } public getSettings(aUserSettings: UserSettings): Settings { return { baseCurrency: aUserSettings.baseCurrency, - isActive: true, - threshold: 0 + isActive: aUserSettings.xRayRules[this.getKey()].isActive, + thresholdMin: 0 }; } } interface Settings extends RuleSettings { baseCurrency: string; - threshold: number; + thresholdMin: number; } diff --git a/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts b/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts index 69db9634d..09029fd3e 100644 --- a/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts +++ b/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts @@ -26,10 +26,10 @@ export class FeeRatioInitialInvestment extends Rule { ? this.fees / this.totalInvestment : 0; - if (feeRatio > ruleSettings.threshold) { + if (feeRatio > ruleSettings.thresholdMax) { return { evaluation: `The fees do exceed ${ - ruleSettings.threshold * 100 + ruleSettings.thresholdMax * 100 }% of your initial investment (${(feeRatio * 100).toPrecision(3)}%)`, value: false }; @@ -37,7 +37,7 @@ export class FeeRatioInitialInvestment extends Rule { return { evaluation: `The fees do not exceed ${ - ruleSettings.threshold * 100 + ruleSettings.thresholdMax * 100 }% of your initial investment (${(feeRatio * 100).toPrecision(3)}%)`, value: true }; @@ -46,13 +46,13 @@ export class FeeRatioInitialInvestment extends Rule { public getSettings(aUserSettings: UserSettings): Settings { return { baseCurrency: aUserSettings.baseCurrency, - isActive: true, - threshold: 0.01 + isActive: aUserSettings.xRayRules[this.getKey()].isActive, + thresholdMax: 0.01 }; } } interface Settings extends RuleSettings { baseCurrency: string; - threshold: number; + thresholdMax: number; } diff --git a/apps/api/src/services/configuration/configuration.service.ts b/apps/api/src/services/configuration/configuration.service.ts index c286ee185..3980c2989 100644 --- a/apps/api/src/services/configuration/configuration.service.ts +++ b/apps/api/src/services/configuration/configuration.service.ts @@ -4,6 +4,7 @@ import { DEFAULT_ROOT_URL } from '@ghostfolio/common/config'; import { Injectable } from '@nestjs/common'; import { DataSource } from '@prisma/client'; import { bool, cleanEnv, host, json, num, port, str, url } from 'envalid'; +import ms from 'ms'; @Injectable() export class ConfigurationService { @@ -20,7 +21,7 @@ export class ConfigurationService { API_KEY_FINANCIAL_MODELING_PREP: str({ default: '' }), API_KEY_OPEN_FIGI: str({ default: '' }), API_KEY_RAPID_API: str({ default: '' }), - CACHE_QUOTES_TTL: num({ default: 1 }), + CACHE_QUOTES_TTL: num({ default: ms('1 minute') / 1000 }), CACHE_TTL: num({ default: 1 }), LOG_LEVEL: str({ default: '' }), DATA_SOURCE_EXCHANGE_RATES: str({ default: DataSource.YAHOO }), @@ -42,6 +43,7 @@ export class ConfigurationService { HOST: host({ default: '0.0.0.0' }), JWT_SECRET_KEY: str({}), MAX_ACTIVITIES_TO_IMPORT: num({ default: Number.MAX_SAFE_INTEGER }), + MAX_CHART_ITEMS: num({ default: 365 }), MAX_ITEM_IN_CACHE: num({ default: 9999 }), PORT: port({ default: 3333 }), REDIS_DB: num({ default: 0 }), diff --git a/apps/api/src/services/cron.service.ts b/apps/api/src/services/cron.service.ts index fc5d613a2..864891c6a 100644 --- a/apps/api/src/services/cron.service.ts +++ b/apps/api/src/services/cron.service.ts @@ -45,10 +45,11 @@ export class CronService { @Cron(CronService.EVERY_SUNDAY_AT_LUNCH_TIME) public async runEverySundayAtTwelvePm() { if (await this.isDataGatheringEnabled()) { - const uniqueAssets = await this.dataGatheringService.getUniqueAssets(); + const assetProfileIdentifiers = + await this.dataGatheringService.getAllAssetProfileIdentifiers(); await this.dataGatheringService.addJobsToQueue( - uniqueAssets.map(({ dataSource, symbol }) => { + assetProfileIdentifiers.map(({ dataSource, symbol }) => { return { data: { dataSource, diff --git a/apps/api/src/services/data-gathering/data-gathering.processor.ts b/apps/api/src/services/data-gathering/data-gathering.processor.ts index 11eda2e7a..d8a6a7644 100644 --- a/apps/api/src/services/data-gathering/data-gathering.processor.ts +++ b/apps/api/src/services/data-gathering/data-gathering.processor.ts @@ -7,7 +7,7 @@ import { GATHER_HISTORICAL_MARKET_DATA_PROCESS } from '@ghostfolio/common/config'; import { DATE_FORMAT, getStartOfUtcDate } from '@ghostfolio/common/helper'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { Process, Processor } from '@nestjs/bull'; import { Injectable, Logger } from '@nestjs/common'; @@ -35,7 +35,7 @@ export class DataGatheringProcessor { ) {} @Process({ concurrency: 1, name: GATHER_ASSET_PROFILE_PROCESS }) - public async gatherAssetProfile(job: Job) { + public async gatherAssetProfile(job: Job) { try { Logger.log( `Asset profile data gathering has been started for ${job.data.symbol} (${job.data.dataSource})`, diff --git a/apps/api/src/services/data-gathering/data-gathering.service.ts b/apps/api/src/services/data-gathering/data-gathering.service.ts index e6e1c32af..1fef46808 100644 --- a/apps/api/src/services/data-gathering/data-gathering.service.ts +++ b/apps/api/src/services/data-gathering/data-gathering.service.ts @@ -10,6 +10,7 @@ import { DATA_GATHERING_QUEUE, DATA_GATHERING_QUEUE_PRIORITY_HIGH, DATA_GATHERING_QUEUE_PRIORITY_LOW, + DATA_GATHERING_QUEUE_PRIORITY_MEDIUM, GATHER_HISTORICAL_MARKET_DATA_PROCESS, GATHER_HISTORICAL_MARKET_DATA_PROCESS_OPTIONS, PROPERTY_BENCHMARKS @@ -19,7 +20,10 @@ import { getAssetProfileIdentifier, resetHours } from '@ghostfolio/common/helper'; -import { BenchmarkProperty, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + BenchmarkProperty +} from '@ghostfolio/common/interfaces'; import { InjectQueue } from '@nestjs/bull'; import { Inject, Injectable, Logger } from '@nestjs/common'; @@ -65,9 +69,22 @@ export class DataGatheringService { } public async gather7Days() { - const dataGatheringItems = await this.getSymbols7D(); await this.gatherSymbols({ - dataGatheringItems, + dataGatheringItems: await this.getCurrencies7D(), + priority: DATA_GATHERING_QUEUE_PRIORITY_HIGH + }); + + await this.gatherSymbols({ + dataGatheringItems: await this.getSymbols7D({ + withUserSubscription: true + }), + priority: DATA_GATHERING_QUEUE_PRIORITY_MEDIUM + }); + + await this.gatherSymbols({ + dataGatheringItems: await this.getSymbols7D({ + withUserSubscription: false + }), priority: DATA_GATHERING_QUEUE_PRIORITY_LOW }); } @@ -80,7 +97,7 @@ export class DataGatheringService { }); } - public async gatherSymbol({ dataSource, symbol }: UniqueAsset) { + public async gatherSymbol({ dataSource, symbol }: AssetProfileIdentifier) { await this.marketDataService.deleteMany({ dataSource, symbol }); const dataGatheringItems = (await this.getSymbolsMax()).filter( @@ -135,23 +152,29 @@ export class DataGatheringService { } } - public async gatherAssetProfiles(aUniqueAssets?: UniqueAsset[]) { - let uniqueAssets = aUniqueAssets?.filter((dataGatheringItem) => { - return dataGatheringItem.dataSource !== 'MANUAL'; - }); + public async gatherAssetProfiles( + aAssetProfileIdentifiers?: AssetProfileIdentifier[] + ) { + let assetProfileIdentifiers = aAssetProfileIdentifiers?.filter( + (dataGatheringItem) => { + return dataGatheringItem.dataSource !== 'MANUAL'; + } + ); - if (!uniqueAssets) { - uniqueAssets = await this.getUniqueAssets(); + if (!assetProfileIdentifiers) { + assetProfileIdentifiers = await this.getAllAssetProfileIdentifiers(); } - if (uniqueAssets.length <= 0) { + if (assetProfileIdentifiers.length <= 0) { return; } - const assetProfiles = - await this.dataProviderService.getAssetProfiles(uniqueAssets); - const symbolProfiles = - await this.symbolProfileService.getSymbolProfiles(uniqueAssets); + const assetProfiles = await this.dataProviderService.getAssetProfiles( + assetProfileIdentifiers + ); + const symbolProfiles = await this.symbolProfileService.getSymbolProfiles( + assetProfileIdentifiers + ); for (const [symbol, assetProfile] of Object.entries(assetProfiles)) { const symbolMapping = symbolProfiles.find((symbolProfile) => { @@ -184,6 +207,7 @@ export class DataGatheringService { figi, figiComposite, figiShareClass, + holdings, isin, name, sectors, @@ -201,6 +225,7 @@ export class DataGatheringService { figi, figiComposite, figiShareClass, + holdings, isin, name, sectors, @@ -215,6 +240,7 @@ export class DataGatheringService { figi, figiComposite, figiShareClass, + holdings, isin, name, sectors, @@ -234,7 +260,7 @@ export class DataGatheringService { 'DataGatheringService' ); - if (uniqueAssets.length === 1) { + if (assetProfileIdentifiers.length === 1) { throw error; } } @@ -270,7 +296,9 @@ export class DataGatheringService { ); } - public async getUniqueAssets(): Promise { + public async getAllAssetProfileIdentifiers(): Promise< + AssetProfileIdentifier[] + > { const symbolProfiles = await this.prismaService.symbolProfile.findMany({ orderBy: [{ symbol: 'asc' }] }); @@ -290,73 +318,83 @@ export class DataGatheringService { }); } - private getEarliestDate(aStartDate: Date) { - return min([aStartDate, subYears(new Date(), 10)]); - } - - private async getSymbols7D(): Promise { - const startDate = subDays(resetHours(new Date()), 7); - - const symbolProfiles = await this.prismaService.symbolProfile.findMany({ - orderBy: [{ symbol: 'asc' }], - select: { - dataSource: true, - scraperConfiguration: true, - symbol: true - } - }); - - // Only consider symbols with incomplete market data for the last - // 7 days - const symbolsWithCompleteMarketData = ( + private async getAssetProfileIdentifiersWithCompleteMarketData(): Promise< + AssetProfileIdentifier[] + > { + return ( await this.prismaService.marketData.groupBy({ _count: true, - by: ['symbol'], + by: ['dataSource', 'symbol'], orderBy: [{ symbol: 'asc' }], where: { - date: { gt: startDate }, + date: { gt: subDays(resetHours(new Date()), 7) }, state: 'CLOSE' } }) ) - .filter((group) => { - return group._count >= 6; + .filter(({ _count }) => { + return _count >= 6; + }) + .map(({ dataSource, symbol }) => { + return { dataSource, symbol }; + }); + } + + private async getCurrencies7D(): Promise { + const assetProfileIdentifiersWithCompleteMarketData = + await this.getAssetProfileIdentifiersWithCompleteMarketData(); + + return this.exchangeRateDataService + .getCurrencyPairs() + .filter(({ dataSource, symbol }) => { + return !assetProfileIdentifiersWithCompleteMarketData.some((item) => { + return item.dataSource === dataSource && item.symbol === symbol; + }); }) - .map((group) => { - return group.symbol; + .map(({ dataSource, symbol }) => { + return { + dataSource, + symbol, + date: subDays(resetHours(new Date()), 7) + }; }); + } + + private getEarliestDate(aStartDate: Date) { + return min([aStartDate, subYears(new Date(), 10)]); + } - const symbolProfilesToGather = symbolProfiles + private async getSymbols7D({ + withUserSubscription = false + }: { + withUserSubscription?: boolean; + }): Promise { + const symbolProfiles = + await this.symbolProfileService.getSymbolProfilesByUserSubscription({ + withUserSubscription + }); + + const assetProfileIdentifiersWithCompleteMarketData = + await this.getAssetProfileIdentifiersWithCompleteMarketData(); + + return symbolProfiles .filter(({ dataSource, scraperConfiguration, symbol }) => { const manualDataSourceWithScraperConfiguration = dataSource === 'MANUAL' && !isEmpty(scraperConfiguration); return ( - !symbolsWithCompleteMarketData.includes(symbol) && + !assetProfileIdentifiersWithCompleteMarketData.some((item) => { + return item.dataSource === dataSource && item.symbol === symbol; + }) && (dataSource !== 'MANUAL' || manualDataSourceWithScraperConfiguration) ); }) .map((symbolProfile) => { return { ...symbolProfile, - date: startDate + date: subDays(resetHours(new Date()), 7) }; }); - - const currencyPairsToGather = this.exchangeRateDataService - .getCurrencyPairs() - .filter(({ symbol }) => { - return !symbolsWithCompleteMarketData.includes(symbol); - }) - .map(({ dataSource, symbol }) => { - return { - dataSource, - symbol, - date: startDate - }; - }); - - return [...currencyPairsToGather, ...symbolProfilesToGather]; } private async getSymbolsMax(): Promise { diff --git a/apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts b/apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts index 5d79ea90a..aa0b3c597 100644 --- a/apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts @@ -36,6 +36,7 @@ export class DataEnhancerService { if ( (assetProfile.countries as unknown as Prisma.JsonArray)?.length > 0 && + (assetProfile.holdings as unknown as Prisma.JsonArray)?.length > 0 && (assetProfile.sectors as unknown as Prisma.JsonArray)?.length > 0 ) { return true; diff --git a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts index eda4542bc..f5144da06 100644 --- a/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts @@ -1,5 +1,6 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface'; +import { Holding } from '@ghostfolio/common/interfaces'; import { Country } from '@ghostfolio/common/interfaces/country.interface'; import { Sector } from '@ghostfolio/common/interfaces/sector.interface'; @@ -151,11 +152,30 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface { } } + if ( + !response.holdings || + (response.holdings as unknown as Holding[]).length === 0 + ) { + response.holdings = []; + + for (const { label, weight } of holdings?.topHoldings ?? []) { + if (label?.toLowerCase() === 'other') { + continue; + } + + response.holdings.push({ + weight, + name: label + }); + } + } + if ( !response.sectors || (response.sectors as unknown as Sector[]).length === 0 ) { response.sectors = []; + for (const [name, value] of Object.entries( holdings?.sectors ?? {} )) { diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 5f93332b5..3691d93c3 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -15,8 +15,13 @@ import { DERIVED_CURRENCIES, PROPERTY_DATA_SOURCE_MAPPING } from '@ghostfolio/common/config'; -import { DATE_FORMAT, getStartOfUtcDate } from '@ghostfolio/common/helper'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + DATE_FORMAT, + getCurrencyFromSymbol, + getStartOfUtcDate, + isDerivedCurrency +} from '@ghostfolio/common/helper'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import type { Granularity, UserWithSettings } from '@ghostfolio/common/types'; import { Inject, Injectable, Logger } from '@nestjs/common'; @@ -71,7 +76,7 @@ export class DataProviderService { return false; } - public async getAssetProfiles(items: UniqueAsset[]): Promise<{ + public async getAssetProfiles(items: AssetProfileIdentifier[]): Promise<{ [symbol: string]: Partial; }> { const response: { @@ -169,7 +174,7 @@ export class DataProviderService { } public async getHistorical( - aItems: UniqueAsset[], + aItems: AssetProfileIdentifier[], aGranularity: Granularity = 'month', from: Date, to: Date @@ -239,7 +244,7 @@ export class DataProviderService { from, to }: { - dataGatheringItems: UniqueAsset[]; + dataGatheringItems: AssetProfileIdentifier[]; from: Date; to: Date; }): Promise<{ @@ -347,7 +352,7 @@ export class DataProviderService { useCache = true, user }: { - items: UniqueAsset[]; + items: AssetProfileIdentifier[]; requestTimeout?: number; useCache?: boolean; user?: UserWithSettings; @@ -373,7 +378,7 @@ export class DataProviderService { } // Get items from cache - const itemsToFetch: UniqueAsset[] = []; + const itemsToFetch: AssetProfileIdentifier[] = []; for (const { dataSource, symbol } of items) { if (useCache) { @@ -425,13 +430,18 @@ export class DataProviderService { continue; } - const symbols = dataGatheringItems.map((dataGatheringItem) => { - return dataGatheringItem.symbol; - }); + const symbols = dataGatheringItems + .filter(({ symbol }) => { + return !isDerivedCurrency(getCurrencyFromSymbol(symbol)); + }) + .map(({ symbol }) => { + return symbol; + }); const maximumNumberOfSymbolsPerRequest = dataProvider.getMaxNumberOfSymbolsPerRequest?.() ?? Number.MAX_SAFE_INTEGER; + for ( let i = 0; i < symbols.length; @@ -520,7 +530,8 @@ export class DataProviderService { .filter((symbol) => { return ( isNumber(response[symbol].marketPrice) && - response[symbol].marketPrice > 0 + response[symbol].marketPrice > 0 && + response[symbol].marketState === 'open' ); }) .map((symbol) => { @@ -645,7 +656,7 @@ export class DataProviderService { dataGatheringItems }: { currency: string; - dataGatheringItems: UniqueAsset[]; + dataGatheringItems: AssetProfileIdentifier[]; }) { return dataGatheringItems.some(({ dataSource, symbol }) => { return ( diff --git a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts index e16986cbb..1fe9e0ad1 100644 --- a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts +++ b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts @@ -246,7 +246,7 @@ export class EodHistoricalDataService implements DataProviderInterface { for (const { close, code, timestamp } of quotes) { let currency: string; - if (code.endsWith('.FOREX')) { + if (this.isForex(code)) { currency = this.convertFromEodSymbol(code)?.replace( DEFAULT_CURRENCY, '' @@ -272,7 +272,10 @@ export class EodHistoricalDataService implements DataProviderInterface { currency, dataSource: this.getName(), marketPrice: close, - marketState: isToday(new Date(timestamp * 1000)) ? 'open' : 'closed' + marketState: + this.isForex(code) || isToday(new Date(timestamp * 1000)) + ? 'open' + : 'closed' }; } else { Logger.error( @@ -311,7 +314,7 @@ export class EodHistoricalDataService implements DataProviderInterface { items: searchResult .filter(({ currency, symbol }) => { // Remove 'NA' currency and exchange rates - return currency?.length === 3 && !symbol.endsWith('.FOREX'); + return currency?.length === 3 && !this.isForex(symbol); }) .map( ({ @@ -349,7 +352,7 @@ export class EodHistoricalDataService implements DataProviderInterface { private convertFromEodSymbol(aEodSymbol: string) { let symbol = aEodSymbol; - if (symbol.endsWith('.FOREX')) { + if (this.isForex(symbol)) { symbol = symbol.replace('GBX', 'GBp'); symbol = symbol.replace('.FOREX', ''); } @@ -451,6 +454,10 @@ export class EodHistoricalDataService implements DataProviderInterface { return searchResult; } + private isForex(aCode: string) { + return aCode?.endsWith('.FOREX') || false; + } + private parseAssetClass({ Exchange, Type diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 986001b0c..588585cab 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -175,9 +175,10 @@ export class ManualService implements DataProviderInterface { .then((_result) => _result.flat()); for (const { currency, symbol } of symbolProfiles) { - let marketPrice = marketData.find((marketDataItem) => { - return marketDataItem.symbol === symbol; - })?.marketPrice; + let marketPrice = + marketData.find((marketDataItem) => { + return marketDataItem.symbol === symbol; + })?.marketPrice ?? 0; response[symbol] = { currency, @@ -264,7 +265,7 @@ export class ManualService implements DataProviderInterface { signal: abortController.signal }); - if (headers['content-type'] === 'application/json') { + if (headers['content-type'].includes('application/json')) { const data = JSON.parse(body); const value = String( jsonpath.query(data, scraperConfiguration.selector)[0] diff --git a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts index 29d199ed7..1f08034cd 100644 --- a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts +++ b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts @@ -361,13 +361,13 @@ export class ExchangeRateDataService { const symbol = `${currencyFrom}${currencyTo}`; const marketData = await this.marketDataService.getRange({ - dateQuery: { gte: startDate, lt: endDate }, - uniqueAssets: [ + assetProfileIdentifiers: [ { dataSource, symbol } - ] + ], + dateQuery: { gte: startDate, lt: endDate } }); if (marketData?.length > 0) { @@ -392,13 +392,13 @@ export class ExchangeRateDataService { } } else { const marketData = await this.marketDataService.getRange({ - dateQuery: { gte: startDate, lt: endDate }, - uniqueAssets: [ + assetProfileIdentifiers: [ { dataSource, symbol: `${DEFAULT_CURRENCY}${currencyFrom}` } - ] + ], + dateQuery: { gte: startDate, lt: endDate } }); for (const { date, marketPrice } of marketData) { @@ -415,16 +415,16 @@ export class ExchangeRateDataService { } } else { const marketData = await this.marketDataService.getRange({ - dateQuery: { - gte: startDate, - lt: endDate - }, - uniqueAssets: [ + assetProfileIdentifiers: [ { dataSource, symbol: `${DEFAULT_CURRENCY}${currencyTo}` } - ] + ], + dateQuery: { + gte: startDate, + lt: endDate + } }); for (const { date, marketPrice } of marketData) { diff --git a/apps/api/src/services/interfaces/environment.interface.ts b/apps/api/src/services/interfaces/environment.interface.ts index 5d3145a28..c0dfb1806 100644 --- a/apps/api/src/services/interfaces/environment.interface.ts +++ b/apps/api/src/services/interfaces/environment.interface.ts @@ -28,6 +28,7 @@ export interface Environment extends CleanedEnvAccessors { GOOGLE_SHEETS_PRIVATE_KEY: string; JWT_SECRET_KEY: string; MAX_ACTIVITIES_TO_IMPORT: number; + MAX_CHART_ITEMS: number; MAX_ITEM_IN_CACHE: number; PORT: number; REDIS_DB: number; diff --git a/apps/api/src/services/interfaces/interfaces.ts b/apps/api/src/services/interfaces/interfaces.ts index b945d0945..fa7fc4d09 100644 --- a/apps/api/src/services/interfaces/interfaces.ts +++ b/apps/api/src/services/interfaces/interfaces.ts @@ -1,4 +1,7 @@ -import { DataProviderInfo, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + DataProviderInfo +} from '@ghostfolio/common/interfaces'; import { MarketState } from '@ghostfolio/common/types'; import { @@ -34,6 +37,6 @@ export interface IDataProviderResponse { marketState: MarketState; } -export interface IDataGatheringItem extends UniqueAsset { +export interface IDataGatheringItem extends AssetProfileIdentifier { date?: Date; } diff --git a/apps/api/src/services/market-data/market-data.service.ts b/apps/api/src/services/market-data/market-data.service.ts index abd6f7bd1..88936d5c4 100644 --- a/apps/api/src/services/market-data/market-data.service.ts +++ b/apps/api/src/services/market-data/market-data.service.ts @@ -5,7 +5,7 @@ import { IDataGatheringItem } from '@ghostfolio/api/services/interfaces/interfac import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { BatchPrismaClient } from '@ghostfolio/common/chunkhelper'; import { resetHours } from '@ghostfolio/common/helper'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; import { @@ -24,7 +24,7 @@ export class MarketDataService { private dateQueryHelper = new DateQueryHelper(); - public async deleteMany({ dataSource, symbol }: UniqueAsset) { + public async deleteMany({ dataSource, symbol }: AssetProfileIdentifier) { return this.prismaService.marketData.deleteMany({ where: { dataSource, @@ -47,7 +47,7 @@ export class MarketDataService { }); } - public async getMax({ dataSource, symbol }: UniqueAsset) { + public async getMax({ dataSource, symbol }: AssetProfileIdentifier) { return this.prismaService.marketData.findFirst({ select: { date: true, @@ -66,11 +66,11 @@ export class MarketDataService { } public async getRange({ - dateQuery, - uniqueAssets + assetProfileIdentifiers, + dateQuery }: { + assetProfileIdentifiers: AssetProfileIdentifier[]; dateQuery: DateQuery; - uniqueAssets: UniqueAsset[]; }): Promise { return this.prismaService.marketData.findMany({ orderBy: [ @@ -83,13 +83,13 @@ export class MarketDataService { ], where: { dataSource: { - in: uniqueAssets.map(({ dataSource }) => { + in: assetProfileIdentifiers.map(({ dataSource }) => { return dataSource; }) }, date: dateQuery, symbol: { - in: uniqueAssets.map(({ symbol }) => { + in: assetProfileIdentifiers.map(({ symbol }) => { return symbol; }) } diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 87bf27031..a225b184c 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -2,9 +2,10 @@ import { LogPerformance } from '@ghostfolio/api/aop/logging.interceptor'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { UNKNOWN_KEY } from '@ghostfolio/common/config'; import { + AssetProfileIdentifier, EnhancedSymbolProfile, - ScraperConfiguration, - UniqueAsset + Holding, + ScraperConfiguration } from '@ghostfolio/common/interfaces'; import { Country } from '@ghostfolio/common/interfaces/country.interface'; import { Sector } from '@ghostfolio/common/interfaces/sector.interface'; @@ -28,7 +29,7 @@ export class SymbolProfileService { return this.prismaService.symbolProfile.create({ data: assetProfile }); } - public async delete({ dataSource, symbol }: UniqueAsset) { + public async delete({ dataSource, symbol }: AssetProfileIdentifier) { return this.prismaService.symbolProfile.delete({ where: { dataSource_symbol: { dataSource, symbol } } }); @@ -42,7 +43,7 @@ export class SymbolProfileService { @LogPerformance public async getSymbolProfiles( - aUniqueAssets: UniqueAsset[] + aAssetProfileIdentifiers: AssetProfileIdentifier[] ): Promise { return this.prismaService.symbolProfile .findMany({ @@ -61,7 +62,7 @@ export class SymbolProfileService { SymbolProfileOverrides: true }, where: { - OR: aUniqueAssets.map(({ dataSource, symbol }) => { + OR: aAssetProfileIdentifiers.map(({ dataSource, symbol }) => { return { dataSource, symbol @@ -99,6 +100,40 @@ export class SymbolProfileService { }); } + public async getSymbolProfilesByUserSubscription({ + withUserSubscription = false + }: { + withUserSubscription?: boolean; + }) { + return this.prismaService.symbolProfile.findMany({ + include: { + Order: { + include: { + User: true + } + } + }, + orderBy: [{ symbol: 'asc' }], + where: { + Order: withUserSubscription + ? { + some: { + User: { + Subscription: { some: { expiresAt: { gt: new Date() } } } + } + } + } + : { + every: { + User: { + Subscription: { none: { expiresAt: { gt: new Date() } } } + } + } + } + } + }); + } + public updateSymbolProfile({ assetClass, assetSubClass, @@ -106,6 +141,7 @@ export class SymbolProfileService { countries, currency, dataSource, + holdings, name, tags, scraperConfiguration, @@ -114,7 +150,7 @@ export class SymbolProfileService { symbolMapping, SymbolProfileOverrides, url - }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { + }: AssetProfileIdentifier & Prisma.SymbolProfileUpdateInput) { return this.prismaService.symbolProfile.update({ data: { assetClass, @@ -122,6 +158,7 @@ export class SymbolProfileService { comment, countries, currency, + holdings, name, tags, scraperConfiguration, @@ -152,6 +189,7 @@ export class SymbolProfileService { symbolProfile?.countries as unknown as Prisma.JsonArray ), dateOfFirstActivity: undefined, + holdings: this.getHoldings(symbolProfile), scraperConfiguration: this.getScraperConfiguration(symbolProfile), sectors: this.getSectors(symbolProfile), symbolMapping: this.getSymbolMapping(symbolProfile), @@ -180,6 +218,14 @@ export class SymbolProfileService { ); } + if ( + (item.SymbolProfileOverrides.holdings as unknown as Holding[]) + ?.length > 0 + ) { + item.holdings = item.SymbolProfileOverrides + .holdings as unknown as Holding[]; + } + item.name = item.SymbolProfileOverrides?.name ?? item.name; if ( @@ -216,6 +262,20 @@ export class SymbolProfileService { }); } + private getHoldings(symbolProfile: SymbolProfile): Holding[] { + return ((symbolProfile?.holdings as Prisma.JsonArray) ?? []).map( + (holding) => { + const { name, weight } = holding as Prisma.JsonObject; + + return { + allocationInPercentage: weight as number, + name: (name as string) ?? UNKNOWN_KEY, + valueInBaseCurrency: undefined + }; + } + ); + } + private getScraperConfiguration( symbolProfile: SymbolProfile ): ScraperConfiguration { diff --git a/apps/api/src/services/twitter-bot/twitter-bot.service.ts b/apps/api/src/services/twitter-bot/twitter-bot.service.ts index 5a98afaed..163b8e9c3 100644 --- a/apps/api/src/services/twitter-bot/twitter-bot.service.ts +++ b/apps/api/src/services/twitter-bot/twitter-bot.service.ts @@ -70,7 +70,7 @@ export class TwitterBotService { await this.twitterClient.v2.tweet(status); Logger.log( - `Fear & Greed Index has been tweeted: https://twitter.com/ghostfolio_/status/${createdTweet.id}`, + `Fear & Greed Index has been posted: https://x.com/ghostfolio_/status/${createdTweet.id}`, 'TwitterBotService' ); } diff --git a/apps/api/src/validators/is-currency-code.ts b/apps/api/src/validators/is-currency-code.ts new file mode 100644 index 000000000..8e8530552 --- /dev/null +++ b/apps/api/src/validators/is-currency-code.ts @@ -0,0 +1,44 @@ +import { DERIVED_CURRENCIES } from '@ghostfolio/common/config'; + +import { + registerDecorator, + ValidationOptions, + ValidatorConstraint, + ValidatorConstraintInterface, + ValidationArguments +} from 'class-validator'; +import { isISO4217CurrencyCode } from 'class-validator'; + +export function IsCurrencyCode(validationOptions?: ValidationOptions) { + return function (object: Object, propertyName: string) { + registerDecorator({ + propertyName, + constraints: [], + options: validationOptions, + target: object.constructor, + validator: IsExtendedCurrencyConstraint + }); + }; +} + +@ValidatorConstraint({ async: false }) +export class IsExtendedCurrencyConstraint + implements ValidatorConstraintInterface +{ + public defaultMessage(args: ValidationArguments) { + return '$value must be a valid ISO4217 currency code'; + } + + public validate(currency: any) { + // Return true if currency is a standard ISO 4217 code or a derived currency + return ( + isISO4217CurrencyCode(currency) || + [ + ...DERIVED_CURRENCIES.map((derivedCurrency) => { + return derivedCurrency.currency; + }), + 'USX' + ].includes(currency) + ); + } +} diff --git a/apps/client/localhost.cert b/apps/client/localhost.cert new file mode 100644 index 000000000..12f31dd27 --- /dev/null +++ b/apps/client/localhost.cert @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC5TCCAc2gAwIBAgIJAJAMHOFnJ6oyMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMMCWxvY2FsaG9zdDAeFw0yNDAyMjcxNTQ2MzFaFw0yNDAzMjgxNTQ2MzFaMBQx +EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAJ0hRjViikEKVIyukXR4CfuYVvFEFzB6AwAQ9Jrz2MseqpLacLTXFFAS54mp +iDuqPBzs9ta40mlSrqSBuAWKikpW5kTNnmqUnDZ6iSJezbYWx9YyULGqqb1q3C4/ +5pH9m6NHJ+2uaUNKlDxYNKbntqs3drQEdxH9yv672Z53nvogTcf9jz6zjutEQGSV +HgVkCTTQmzf3+3st+VJ5D8JeYFR+tpZ6yleqgXFaTMtPZRfKLvTkQ+KeyCJLnsUJ +BQvdCKI0PGsG6d6ygXFmSePolD9KW3VTKKDPCsndID89vAnRWDj9UhzvycxmKpcF +GrUPH5+Pis1PM1R7OnAvnFygnyECAwEAAaM6MDgwFAYDVR0RBA0wC4IJbG9jYWxo +b3N0MAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0B +AQsFAAOCAQEAOdzrY3RTAPnBVAd3/GKIEkielYyOgKPnvd+RcOB+je8cXZY+vaxX +uEFP0526G00+kRZ2Tx9t0SmjoSpwg3lHUPMko0dIxgRlqISDAohdrEptHpcVujsD +ak88LLnAurr60JNjWX2wbEoJ18KLtqGSnATdmCgKwDPIN5a7+ssp44BGyzH6VYCg +wV3VjJl0pp4C5M0Jfu0p1FrQjzIVhgqR7JFYmvqIogWrGwYAQK/3XRXq8t48J5X3 +IsfWiLAA2ZdCoWAnZ6PAGBOoGivtkJm967pHjd/28qYY6mQo4sN2ksEOjx6/YslF +2mOJdLV/DzqoggUsTpPEG0dRhzQLTGHKDQ== +-----END CERTIFICATE----- diff --git a/apps/client/localhost.pem b/apps/client/localhost.pem new file mode 100644 index 000000000..dc2a7ff5a --- /dev/null +++ b/apps/client/localhost.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCdIUY1YopBClSM +rpF0eAn7mFbxRBcwegMAEPSa89jLHqqS2nC01xRQEueJqYg7qjwc7PbWuNJpUq6k +gbgFiopKVuZEzZ5qlJw2eokiXs22FsfWMlCxqqm9atwuP+aR/ZujRyftrmlDSpQ8 +WDSm57arN3a0BHcR/cr+u9med576IE3H/Y8+s47rREBklR4FZAk00Js39/t7LflS +eQ/CXmBUfraWespXqoFxWkzLT2UXyi705EPinsgiS57FCQUL3QiiNDxrBunesoFx +Zknj6JQ/Slt1UyigzwrJ3SA/PbwJ0Vg4/VIc78nMZiqXBRq1Dx+fj4rNTzNUezpw +L5xcoJ8hAgMBAAECggEAPU5YOEgELTA8oM8TjV+wdWuQsH2ilpVkSkhTR4nQkh+a +6cU0qDoqgLt/fySYNL9MyPRjso9V+SX7YdAC3paZMjwJh9q57lehQ1g33SMkG+Fz +gs0K0ucFZxQkaB8idN+ANAp1N7UO+ORGRe0cTeqmSNNRCxea5XgiFZVxaPS/IFOR +vVdXS1DulgwHh4H0ljKmkj7jc9zPBSc9ccW5Ml2q4a26Atu4IC/Mlp/DF4GNELbD +ebi9ZOZG33ip2bdhj3WX7NW9GJaaViKtVUpcpR6u+6BfvTXQ6xrqdoxXk9fnPzzf +sSoLPTt8yO4RavP1zQU22PhgIcWudhCiy/2Nv+uLqQKBgQDMPh1/xwdFl8yES8dy +f0xJyCDWPiB+xzGwcOAC90FrNZaqG0WWs3VHE4cilaWjCflvdR6aAEDEY68sZJhl +h+ChT/g61QLMOI+VIDQ1kJXKYgfS/B+BE1PZ0EkuymKFOvbNO8agHodB8CqnZaQh +bLuZaDnZ0JLK4im3KPt70+aKYwKBgQDE8s6xl0SLu+yJLo3VklCRD67Z8/jlvx2t +h3DF6NG8pB3QmvKdJWFKuLAWLGflJwbUW9Pt3hXkc0649KQrtiIYC0ZMh9KMaVCk +WmjS/n2eIUQZ7ZUlwFesi4p4iGynVBavIY8TJ6Y+K3TvsJgXP3IZ96r689PQJo8E +KbSeyYzFqwKBgGQTS4EAlJ+U8bEhMGj51veQCAbyChoUoFRD+n95h6RwbZKMKlzd +MenRt7VKfg6VJJNoX8Y1uYaBEaQ+5i1Zlsdz1718AhLu4+u+C9bzMXIo9ox63TTx +s3RWioVSxVNiwOtvDrQGQWAdvcioFPQLwyA34aDIgiTHDImimxbhjWThAoGAWOqW +Tq9QjxWk0Lpn5ohMP3GpK1VuhasnJvUDARb/uf8ORuPtrOz3Y9jGBvy9W0OnXbCn +mbiugZldbTtl8yYjdl+AuYSIlkPl2I3IzZl/9Shnqp0MvSJ9crT9KzXMeC8Knr6z +7Z30/BR6ksxTngtS5E5grzPt6Qe/gc2ich3kpEkCgYBfBHUhVIKVrDW/8a7U2679 +Wj4i9us/M3iPMxcTv7/ZAg08TEvNBQYtvVQLu0NfDKXx8iGKJJ6evIYgNXVm2sPq +VzSgwGCALi1X0443amZU+mnX+/9RnBqyM+PJU8570mM83jqKlY/BEsi0aqxTioFG +an3xbjjN+Rq9iKLzmPxIMg== +-----END PRIVATE KEY----- diff --git a/apps/client/project.json b/apps/client/project.json index 4c962bd8d..3e146ef0b 100644 --- a/apps/client/project.json +++ b/apps/client/project.json @@ -36,6 +36,10 @@ "ngswConfigPath": "apps/client/ngsw-config.json" }, "configurations": { + "development-ca": { + "baseHref": "/ca/", + "localize": ["ca"] + }, "development-de": { "baseHref": "/de/", "localize": ["de"] @@ -163,8 +167,11 @@ "serve": { "executor": "@nx/angular:webpack-dev-server", "options": { + "buildTarget": "client:build", "proxyConfig": "apps/client/proxy.conf.json", - "browserTarget": "client:build" + "ssl": true, + "sslCert": "apps/client/localhost.cert", + "sslKey": "apps/client/localhost.pem" }, "configurations": { "development-de": { @@ -209,6 +216,7 @@ "includeContext": true, "outputPath": "src/locales", "targetFiles": [ + "messages.ca.xlf", "messages.de.xlf", "messages.es.xlf", "messages.fr.xlf", @@ -237,6 +245,10 @@ }, "i18n": { "locales": { + "ca": { + "baseHref": "/ca/", + "translation": "apps/client/src/locales/messages.ca.xlf" + }, "de": { "baseHref": "/de/", "translation": "apps/client/src/locales/messages.de.xlf" diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index fd5ae16f0..806360c0f 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -1,33 +1,31 @@
-
-
-
- -
- You are using the Live Demo. - Create Account -
-
- {{ user.systemMessage.message }} + @if (canCreateAccount || user?.systemMessage) { +
+
+
+ @if (canCreateAccount) { + +
+ You are using the Live Demo. + Create Account +
+ } + @if (!canCreateAccount && user?.systemMessage) { +
+ {{ user.systemMessage.message }} +
+ }
-
+ } - + +} diff --git a/apps/client/src/app/app.component.scss b/apps/client/src/app/app.component.scss index a23e94fbb..6037e9639 100644 --- a/apps/client/src/app/app.component.scss +++ b/apps/client/src/app/app.component.scss @@ -46,7 +46,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { footer { background-color: rgba(var(--palette-foreground-text-dark), 0.05); } diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 08cc915bd..fbc358590 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -28,6 +28,7 @@ import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { filter, takeUntil } from 'rxjs/operators'; +import { NotificationService } from './core/notification/notification.service'; import { DataService } from './services/data.service'; import { ImpersonationStorageService } from './services/impersonation-storage.service'; import { TokenStorageService } from './services/token-storage.service'; @@ -81,6 +82,7 @@ export class AppComponent implements OnDestroy, OnInit { private dialog: MatDialog, @Inject(DOCUMENT) private document: Document, private impersonationStorageService: ImpersonationStorageService, + private notificationService: NotificationService, private route: ActivatedRoute, private router: Router, private title: Title, @@ -199,7 +201,9 @@ export class AppComponent implements OnDestroy, OnInit { if (this.user.systemMessage.routerLink) { this.router.navigate(this.user.systemMessage.routerLink); } else { - alert(this.user.systemMessage.message); + this.notificationService.alert({ + title: this.user.systemMessage.message + }); } } @@ -255,13 +259,22 @@ export class AppComponent implements OnDestroy, OnInit { colorScheme: this.user?.settings?.colorScheme, deviceType: this.deviceType, hasImpersonationId: this.hasImpersonationId, + hasPermissionToCreateOrder: + !this.hasImpersonationId && + hasPermission(this.user?.permissions, permissions.createOrder) && + !this.user?.settings?.isRestrictedView, hasPermissionToReportDataGlitch: hasPermission( this.user?.permissions, permissions.reportDataGlitch ), + hasPermissionToUpdateOrder: + !this.hasImpersonationId && + hasPermission(this.user?.permissions, permissions.updateOrder) && + !this.user?.settings?.isRestrictedView, locale: this.user?.settings?.locale }, height: this.deviceType === 'mobile' ? '97.5vh' : '80vh', + maxWidth: this.deviceType === 'mobile' ? '95vw' : '50rem', width: this.deviceType === 'mobile' ? '100vw' : '50rem' }); @@ -288,9 +301,9 @@ export class AppComponent implements OnDestroy, OnInit { ); if (isDarkTheme) { - this.document.body.classList.add('is-dark-theme'); + this.document.body.classList.add('theme-dark'); } else { - this.document.body.classList.remove('is-dark-theme'); + this.document.body.classList.remove('theme-dark'); } this.document diff --git a/apps/client/src/app/app.module.ts b/apps/client/src/app/app.module.ts index fac59bf48..04602dd2e 100644 --- a/apps/client/src/app/app.module.ts +++ b/apps/client/src/app/app.module.ts @@ -1,7 +1,10 @@ import { GfLogoComponent } from '@ghostfolio/ui/logo'; import { Platform } from '@angular/cdk/platform'; -import { HttpClientModule } from '@angular/common/http'; +import { + provideHttpClient, + withInterceptorsFromDi +} from '@angular/common/http'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatChipsModule } from '@angular/material/chips'; @@ -30,6 +33,7 @@ import { GfSubscriptionInterstitialDialogModule } from './components/subscriptio import { authInterceptorProviders } from './core/auth.interceptor'; import { httpResponseInterceptorProviders } from './core/http-response.interceptor'; import { LanguageService } from './core/language.service'; +import { GfNotificationModule } from './core/notification/notification.module'; export function NgxStripeFactory(): string { return environment.stripePublicKey; @@ -44,8 +48,8 @@ export function NgxStripeFactory(): string { BrowserModule, GfHeaderModule, GfLogoComponent, + GfNotificationModule, GfSubscriptionInterstitialDialogModule, - HttpClientModule, MarkdownModule.forRoot(), MatAutocompleteModule, MatChipsModule, @@ -63,6 +67,7 @@ export function NgxStripeFactory(): string { authInterceptorProviders, httpResponseInterceptorProviders, LanguageService, + provideHttpClient(withInterceptorsFromDi()), { provide: DateAdapter, useClass: CustomDateAdapter, diff --git a/apps/client/src/app/components/access-table/access-table.component.html b/apps/client/src/app/components/access-table/access-table.component.html index 8112ca4ad..b1befc8c9 100644 --- a/apps/client/src/app/components/access-table/access-table.component.html +++ b/apps/client/src/app/components/access-table/access-table.component.html @@ -1,67 +1,71 @@ - - - - - +
+
Alias - {{ element.alias }} -
+ + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + + + + - - -
Alias + {{ element.alias }} + Grantee - {{ element.grantee }} - Grantee + {{ element.grantee }} + Permission -
- @if (element.permissions.includes('READ')) { - - View - } @else if (element.permissions.includes('READ_RESTRICTED')) { - - Restricted view - } -
-
Permission +
+ @if (element.permissions.includes('READ')) { + + View + } @else if (element.permissions.includes('READ_RESTRICTED')) { + + Restricted view + } +
+
Details - - Details + @if (element.type === 'PUBLIC') { + + } + - - - + - -
+ + + +
diff --git a/apps/client/src/app/components/access-table/access-table.component.ts b/apps/client/src/app/components/access-table/access-table.component.ts index 12412a3c2..7772451d4 100644 --- a/apps/client/src/app/components/access-table/access-table.component.ts +++ b/apps/client/src/app/components/access-table/access-table.component.ts @@ -1,3 +1,5 @@ +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; import { Access } from '@ghostfolio/common/interfaces'; @@ -29,7 +31,7 @@ export class AccessTableComponent implements OnChanges, OnInit { public defaultLanguageCode = DEFAULT_LANGUAGE_CODE; public displayedColumns = []; - public constructor() {} + public constructor(private notificationService: NotificationService) {} public ngOnInit() {} @@ -46,12 +48,12 @@ export class AccessTableComponent implements OnChanges, OnInit { } public onDeleteAccess(aId: string) { - const confirmation = confirm( - $localize`Do you really want to revoke this granted access?` - ); - - if (confirmation) { - this.accessDeleted.emit(aId); - } + this.notificationService.confirm({ + confirmFn: () => { + this.accessDeleted.emit(aId); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to revoke this granted access?` + }); } } diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index 919b9549d..1cec23aba 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -23,6 +23,7 @@ import { import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { Sort, SortDirection } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; +import { Router } from '@angular/router'; import { Big } from 'big.js'; import { format, parseISO } from 'date-fns'; import { isNumber } from 'lodash'; @@ -66,6 +67,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit { @Inject(MAT_DIALOG_DATA) public data: AccountDetailDialogParams, private dataService: DataService, public dialogRef: MatDialogRef, + private router: Router, private userService: UserService ) { this.userService.stateChanged @@ -92,6 +94,14 @@ export class AccountDetailDialog implements OnDestroy, OnInit { this.fetchPortfolioPerformance(); } + public onCloneActivity(aActivity: Activity) { + this.router.navigate(['/portfolio', 'activities'], { + queryParams: { activityId: aActivity.id, createDialog: true } + }); + + this.dialogRef.close(); + } + public onClose() { this.dialogRef.close(); } @@ -147,6 +157,14 @@ export class AccountDetailDialog implements OnDestroy, OnInit { this.fetchActivities(); } + public onUpdateActivity(aActivity: Activity) { + this.router.navigate(['/portfolio', 'activities'], { + queryParams: { activityId: aActivity.id, editDialog: true } + }); + + this.dialogRef.close(); + } + private fetchAccount() { this.dataService .fetchAccount(this.data.accountId) diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html index 0f0091ce5..9f55250ec 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html @@ -20,6 +20,7 @@
+
@@ -101,10 +103,17 @@ [hasPermissionToFilter]="false" [hasPermissionToOpenDetails]="false" [locale]="user?.settings?.locale" - [showActions]="false" + [showActions]=" + !data.hasImpersonationId && + data.hasPermissionToCreateOrder && + user?.settings?.isExperimentalFeatures && + !user?.settings?.isRestrictedView + " [sortColumn]="sortColumn" [sortDirection]="sortDirection" [totalItems]="totalItems" + (activityToClone)="onCloneActivity($event)" + (activityToUpdate)="onUpdateActivity($event)" (export)="onExport()" (sortChanged)="onSortChanged($event)" /> diff --git a/apps/client/src/app/components/account-detail-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/account-detail-dialog/interfaces/interfaces.ts index 016fc3b7d..9ad6a5ba4 100644 --- a/apps/client/src/app/components/account-detail-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/components/account-detail-dialog/interfaces/interfaces.ts @@ -2,4 +2,5 @@ export interface AccountDetailDialogParams { accountId: string; deviceType: string; hasImpersonationId: boolean; + hasPermissionToCreateOrder: boolean; } diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.html b/apps/client/src/app/components/accounts-table/accounts-table.component.html index 241b5d90a..f5039395b 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.html +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1,296 +1,322 @@ -
- -
- - - - - - - +@if (showActions) { +
+ +
+} - - - - - +
+
-
- -
-
- Name - - - {{ element.name }} - Total
+ + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + - - + + + + - - - + + + + + + + - - + + + + + + + - - - -
+
+ @if (element.isExcluded) { + + } +
+
- Currency - - {{ element.currency }} - - {{ baseCurrency }} - + Name + + @if (element.Platform?.url) { + + } + {{ element.name }} + Total - Platform - -
- - {{ element.Platform?.name }} -
-
+ Currency + + {{ element.currency }} + + {{ baseCurrency }} + - # - Activities - - {{ element.transactionCount }} - - {{ transactionCount }} - + Platform + +
+ @if (element.Platform?.url) { + + } + {{ element.Platform?.name }} +
+
- Cash Balance - - - - - + # + Activities + + {{ element.transactionCount }} + + {{ transactionCount }} + - Value - - - - - + Cash Balance + + + + + - Value - - - - - + Value + + + + + - + Value + - - - + + - - - - - + @if (element.comment) { + + } + - -
+ + + + +
- +@if (isLoading) { + +} diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.scss b/apps/client/src/app/components/accounts-table/accounts-table.component.scss index e934483db..990b8b294 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.scss +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.scss @@ -1,7 +1,7 @@ :host { display: block; - .mat-mdc-table { + .gf-table { th { ::ng-deep { .mat-sort-header-container { diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.ts b/apps/client/src/app/components/accounts-table/accounts-table.component.ts index 702803aa0..ff0358baa 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.ts +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.ts @@ -1,3 +1,5 @@ +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { getLocale } from '@ghostfolio/common/helper'; import { @@ -54,7 +56,10 @@ export class AccountsTableComponent implements OnChanges, OnDestroy, OnInit { private unsubscribeSubject = new Subject(); - public constructor(private router: Router) {} + public constructor( + private notificationService: NotificationService, + private router: Router + ) {} public ngOnInit() {} @@ -97,13 +102,13 @@ export class AccountsTableComponent implements OnChanges, OnDestroy, OnInit { } public onDeleteAccount(aId: string) { - const confirmation = confirm( - $localize`Do you really want to delete this account?` - ); - - if (confirmation) { - this.accountDeleted.emit(aId); - } + this.notificationService.confirm({ + confirmFn: () => { + this.accountDeleted.emit(aId); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this account?` + }); } public onOpenAccountDetailDialog(accountId: string) { @@ -115,7 +120,9 @@ export class AccountsTableComponent implements OnChanges, OnDestroy, OnInit { } public onOpenComment(aComment: string) { - alert(aComment); + this.notificationService.alert({ + title: aComment + }); } public onTransferBalance() { diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts b/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts index 23730f3aa..820b3651d 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts @@ -1,3 +1,4 @@ +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { @@ -59,6 +60,7 @@ export class AdminJobsComponent implements OnDestroy, OnInit { private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, private formBuilder: FormBuilder, + private notificationService: NotificationService, private userService: UserService ) { this.userService.stateChanged @@ -119,11 +121,15 @@ export class AdminJobsComponent implements OnDestroy, OnInit { } public onViewData(aData: AdminJobs['jobs'][0]['data']) { - alert(JSON.stringify(aData, null, ' ')); + this.notificationService.alert({ + title: JSON.stringify(aData, null, ' ') + }); } public onViewStacktrace(aStacktrace: AdminJobs['jobs'][0]['stacktrace']) { - alert(JSON.stringify(aStacktrace, null, ' ')); + this.notificationService.alert({ + title: JSON.stringify(aStacktrace, null, ' ') + }); } public ngOnDestroy() { diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.html b/apps/client/src/app/components/admin-jobs/admin-jobs.html index 5da929fe1..9ea2097e2 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.html +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -5,11 +5,14 @@ - {{ statusFilterOption }} + @for ( + statusFilterOption of statusFilterOptions; + track statusFilterOption + ) { + {{ + statusFilterOption + }} + } @@ -28,15 +31,11 @@ Type - - Asset Profile - - - Historical Market Data - + @if (element.name === 'GATHER_ASSET_PROFILE') { + Asset Profile + } @else if (element.name === 'GATHER_HISTORICAL_MARKET_DATA') { + Historical Market Data + } @@ -109,37 +108,29 @@ Status - - - - - - + @if (element.state === 'active') { + + } @else if (element.state === 'completed') { + + } @else if (element.state === 'delayed') { + + } @else if (element.state === 'failed') { + + } @else if (element.state === 'paused') { + + } @else if (element.state === 'waiting') { + + } diff --git a/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html b/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html index 00551bc99..617dd6962 100644 --- a/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html +++ b/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html @@ -9,35 +9,38 @@ [showYAxis]="true" [symbol]="symbol" /> -
-
{{ itemByMonth.key }}
-
-
+ @for (itemByMonth of marketDataByMonth | keyvalue; track itemByMonth) { +
+
{{ itemByMonth.key }}
+
+ @for (dayItem of days; track dayItem; let i = $index) { +
+ } +
-
+ }
diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts index 61f11c9bd..98a1d0480 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts @@ -6,10 +6,17 @@ import { ghostfolioScraperApiSymbolPrefix } from '@ghostfolio/common/config'; import { getDateFormatString } from '@ghostfolio/common/helper'; -import { Filter, UniqueAsset, User } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + Filter, + InfoItem, + User +} from '@ghostfolio/common/interfaces'; import { AdminMarketDataItem } from '@ghostfolio/common/interfaces/admin-market-data.interface'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { translate } from '@ghostfolio/ui/i18n'; +import { SelectionModel } from '@angular/cdk/collections'; import { AfterViewInit, ChangeDetectionStrategy, @@ -68,6 +75,11 @@ export class AdminMarketDataComponent }; }) .concat([ + { + id: 'BENCHMARKS', + label: $localize`Benchmarks`, + type: 'PRESET_ID' + }, { id: 'CURRENCIES', label: $localize`Currencies`, @@ -91,32 +103,23 @@ export class AdminMarketDataComponent new MatTableDataSource(); public defaultDateFormat: string; public deviceType: string; - public displayedColumns = [ - 'nameWithSymbol', - 'dataSource', - 'assetClass', - 'assetSubClass', - 'date', - 'activitiesCount', - 'marketDataItemCount', - 'sectorsCount', - 'countriesCount', - 'comment', - 'actions' - ]; + public displayedColumns: string[] = []; public filters$ = new Subject(); public ghostfolioScraperApiSymbolPrefix = ghostfolioScraperApiSymbolPrefix; + public hasPermissionForSubscription: boolean; + public info: InfoItem; public isLoading = false; public isUUID = isUUID; public placeholder = ''; public pageSize = DEFAULT_PAGE_SIZE; + public selection: SelectionModel>; public totalItems = 0; public user: User; private unsubscribeSubject = new Subject(); public constructor( - private adminMarketDataService: AdminMarketDataService, + public adminMarketDataService: AdminMarketDataService, private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, @@ -126,6 +129,33 @@ export class AdminMarketDataComponent private router: Router, private userService: UserService ) { + this.info = this.dataService.fetchInfo(); + + this.hasPermissionForSubscription = hasPermission( + this.info?.globalPermissions, + permissions.enableSubscription + ); + + this.displayedColumns = [ + 'select', + 'nameWithSymbol', + 'dataSource', + 'assetClass', + 'assetSubClass', + 'date', + 'activitiesCount', + 'marketDataItemCount', + 'sectorsCount', + 'countriesCount' + ]; + + if (this.hasPermissionForSubscription) { + this.displayedColumns.push('isUsedByUsersWithSubscription'); + } + + this.displayedColumns.push('comment'); + this.displayedColumns.push('actions'); + this.route.queryParams .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((params) => { @@ -183,6 +213,8 @@ export class AdminMarketDataComponent this.benchmarks = benchmarks; this.deviceType = this.deviceService.getDeviceInfo().deviceType; + + this.selection = new SelectionModel(true); } public onChangePage(page: PageEvent) { @@ -193,8 +225,16 @@ export class AdminMarketDataComponent }); } - public onDeleteProfileData({ dataSource, symbol }: UniqueAsset) { - this.adminMarketDataService.deleteProfileData({ dataSource, symbol }); + public onDeleteAssetProfile({ dataSource, symbol }: AssetProfileIdentifier) { + this.adminMarketDataService.deleteAssetProfile({ dataSource, symbol }); + } + + public onDeleteAssetProfiles() { + this.adminMarketDataService.deleteAssetProfiles( + this.selection.selected.map(({ dataSource, symbol }) => { + return { dataSource, symbol }; + }) + ); } public onGather7Days() { @@ -226,21 +266,27 @@ export class AdminMarketDataComponent .subscribe(() => {}); } - public onGatherProfileDataBySymbol({ dataSource, symbol }: UniqueAsset) { + public onGatherProfileDataBySymbol({ + dataSource, + symbol + }: AssetProfileIdentifier) { this.adminService .gatherProfileDataBySymbol({ dataSource, symbol }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => {}); } - public onGatherSymbol({ dataSource, symbol }: UniqueAsset) { + public onGatherSymbol({ dataSource, symbol }: AssetProfileIdentifier) { this.adminService .gatherSymbol({ dataSource, symbol }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => {}); } - public onOpenAssetProfileDialog({ dataSource, symbol }: UniqueAsset) { + public onOpenAssetProfileDialog({ + dataSource, + symbol + }: AssetProfileIdentifier) { this.router.navigate([], { queryParams: { dataSource, @@ -281,6 +327,8 @@ export class AdminMarketDataComponent this.placeholder = this.activeFilters.length <= 0 ? $localize`Filter by...` : ''; + this.selection.clear(); + this.adminService .fetchAdminMarketData({ sortColumn, diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.html b/apps/client/src/app/components/admin-market-data/admin-market-data.html index 8cc8b65c6..f3b2d8ddd 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.html +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -11,206 +11,249 @@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +
- Symbol - - {{ element.symbol }} - - Name - -
{{ element.name }}
-
- {{ element.symbol | gfSymbol }} -
-
- Data Source - - {{ element.dataSource }} - - Asset Class - - {{ element.assetClass }} - - Asset Sub Class - - {{ element.assetSubClass }} - - First Activity - - {{ (element.date | date: defaultDateFormat) ?? '' }} - - Activities Count - - {{ element.activitiesCount }} - - Historical Data - - {{ element.marketDataItemCount }} - - Sectors Count - - {{ element.sectorsCount }} - - Countries Count - - {{ element.countriesCount }} - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - -
+ @if ( + adminMarketDataService.hasPermissionToDeleteAssetProfile({ + activitiesCount: element.activitiesCount, + isBenchmark: element.isBenchmark, symbol: element.symbol - }" - [routerLink]="[]" + }) + ) { + + + } + + Symbol + + {{ element.symbol }} + + Name + +
{{ element.name }}
+ @if (!isUUID(element.symbol)) { +
+ {{ + element.symbol | gfSymbol + }} +
+ } +
+ Data Source + + {{ element.dataSource }} + + Asset Class + + {{ element.assetClass }} + + Asset Sub Class + + {{ element.assetSubClass }} + + First Activity + + {{ (element.date | date: defaultDateFormat) ?? '' }} + + Activities Count + + {{ element.activitiesCount }} + + Historical Data + + {{ element.marketDataItemCount }} + + Sectors Count + + {{ element.sectorsCount }} + + Countries Count + + {{ element.countriesCount }} + + @if (element.isUsedByUsersWithSubscription) { + + } + + @if (element.comment) { + + } + + + + + + + + + - -
+ +
+ + + Edit + + + +
+
+
- + @if (isLoading && totalItems === 0) { + + }
diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts index 73bf47f7f..224e3506b 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts @@ -1,9 +1,11 @@ import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { GfActivitiesFilterComponent } from '@ghostfolio/ui/activities-filter'; +import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatMenuModule } from '@angular/material/menu'; import { MatPaginatorModule } from '@angular/material/paginator'; import { MatSortModule } from '@angular/material/sort'; @@ -23,8 +25,10 @@ import { GfCreateAssetProfileDialogModule } from './create-asset-profile-dialog/ GfActivitiesFilterComponent, GfAssetProfileDialogModule, GfCreateAssetProfileDialogModule, + GfPremiumIndicatorComponent, GfSymbolModule, MatButtonModule, + MatCheckboxModule, MatMenuModule, MatPaginatorModule, MatSortModule, diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.service.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.service.ts index 44319a7a3..006bacb95 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.service.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.service.ts @@ -1,26 +1,81 @@ +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { AdminService } from '@ghostfolio/client/services/admin.service'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { ghostfolioScraperApiSymbolPrefix } from '@ghostfolio/common/config'; +import { getCurrencyFromSymbol, isCurrency } from '@ghostfolio/common/helper'; +import { + AssetProfileIdentifier, + AdminMarketDataItem +} from '@ghostfolio/common/interfaces'; import { Injectable } from '@angular/core'; -import { takeUntil } from 'rxjs'; +import { EMPTY, catchError, finalize, forkJoin, takeUntil } from 'rxjs'; @Injectable() export class AdminMarketDataService { - public constructor(private adminService: AdminService) {} + public constructor( + private adminService: AdminService, + private notificationService: NotificationService + ) {} - public deleteProfileData({ dataSource, symbol }: UniqueAsset) { - const confirmation = confirm( - $localize`Do you really want to delete this asset profile?` - ); + public deleteAssetProfile({ dataSource, symbol }: AssetProfileIdentifier) { + this.notificationService.confirm({ + confirmFn: () => { + this.adminService + .deleteProfileData({ dataSource, symbol }) + .subscribe(() => { + setTimeout(() => { + window.location.reload(); + }, 300); + }); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this asset profile?` + }); + } + + public deleteAssetProfiles( + aAssetProfileIdentifiers: AssetProfileIdentifier[] + ) { + this.notificationService.confirm({ + confirmFn: () => { + const deleteRequests = aAssetProfileIdentifiers.map( + ({ dataSource, symbol }) => { + return this.adminService.deleteProfileData({ dataSource, symbol }); + } + ); + + forkJoin(deleteRequests) + .pipe( + catchError(() => { + this.notificationService.alert({ + title: $localize`Oops! Could not delete profiles.` + }); - if (confirmation) { - this.adminService - .deleteProfileData({ dataSource, symbol }) - .subscribe(() => { - setTimeout(() => { - window.location.reload(); - }, 300); - }); - } + return EMPTY; + }), + finalize(() => { + window.location.reload(); + setTimeout(() => {}, 300); + }) + ) + .subscribe(() => {}); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete these profiles?` + }); + } + + public hasPermissionToDeleteAssetProfile({ + activitiesCount, + isBenchmark, + symbol + }: Pick) { + return ( + activitiesCount === 0 && + !isBenchmark && + !isCurrency(getCurrencyFromSymbol(symbol)) && + !symbol.startsWith(ghostfolioScraperApiSymbolPrefix) + ); } } diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index 85a21bf16..cb8a1de02 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -1,6 +1,7 @@ import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { UpdateMarketDataDto } from '@ghostfolio/api/app/admin/update-market-data.dto'; import { AdminMarketDataService } from '@ghostfolio/client/components/admin-market-data/admin-market-data.service'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { validateObjectForForm } from '@ghostfolio/client/util/form.util'; @@ -8,7 +9,7 @@ import { ghostfolioScraperApiSymbolPrefix } from '@ghostfolio/common/config'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { AdminMarketDataDetails, - UniqueAsset + AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; @@ -97,13 +98,14 @@ export class AssetProfileDialog implements OnDestroy, OnInit { private unsubscribeSubject = new Subject(); public constructor( - private adminMarketDataService: AdminMarketDataService, + public adminMarketDataService: AdminMarketDataService, private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, @Inject(MAT_DIALOG_DATA) public data: AssetProfileDialogParams, private dataService: DataService, public dialogRef: MatDialogRef, private formBuilder: FormBuilder, + private notificationService: NotificationService, private snackBar: MatSnackBar ) {} @@ -198,20 +200,23 @@ export class AssetProfileDialog implements OnDestroy, OnInit { this.dialogRef.close(); } - public onDeleteProfileData({ dataSource, symbol }: UniqueAsset) { - this.adminMarketDataService.deleteProfileData({ dataSource, symbol }); + public onDeleteProfileData({ dataSource, symbol }: AssetProfileIdentifier) { + this.adminMarketDataService.deleteAssetProfile({ dataSource, symbol }); this.dialogRef.close(); } - public onGatherProfileDataBySymbol({ dataSource, symbol }: UniqueAsset) { + public onGatherProfileDataBySymbol({ + dataSource, + symbol + }: AssetProfileIdentifier) { this.adminService .gatherProfileDataBySymbol({ dataSource, symbol }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => {}); } - public onGatherSymbol({ dataSource, symbol }: UniqueAsset) { + public onGatherSymbol({ dataSource, symbol }: AssetProfileIdentifier) { this.adminService .gatherSymbol({ dataSource, symbol }) .pipe(takeUntil(this.unsubscribeSubject)) @@ -265,7 +270,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { } } - public onSetBenchmark({ dataSource, symbol }: UniqueAsset) { + public onSetBenchmark({ dataSource, symbol }: AssetProfileIdentifier) { this.dataService .postBenchmark({ dataSource, symbol }) .pipe(takeUntil(this.unsubscribeSubject)) @@ -350,23 +355,27 @@ export class AssetProfileDialog implements OnDestroy, OnInit { }) .pipe( catchError(({ error }) => { - alert(`Error: ${error?.message}`); + this.notificationService.alert({ + message: error?.message, + title: $localize`Error` + }); return EMPTY; }), takeUntil(this.unsubscribeSubject) ) .subscribe(({ price }) => { - alert( - $localize`The current market price is` + + this.notificationService.alert({ + title: + $localize`The current market price is` + ' ' + price + ' ' + this.assetProfileForm.get('currency').value - ); + }); }); } - public onUnsetBenchmark({ dataSource, symbol }: UniqueAsset) { + public onUnsetBenchmark({ dataSource, symbol }: AssetProfileIdentifier) { this.dataService .deleteBenchmark({ dataSource, symbol }) .pipe(takeUntil(this.unsubscribeSubject)) diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index c4a85e739..b40eb63fe 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -48,9 +48,11 @@ mat-menu-item type="button" [disabled]=" - assetProfile?.activitiesCount !== 0 || - isBenchmark || - data.symbol.startsWith(ghostfolioScraperApiSymbolPrefix) + !adminMarketDataService.hasPermissionToDeleteAssetProfile({ + activitiesCount: assetProfile?.activitiesCount, + isBenchmark: isBenchmark, + symbol: data.symbol + }) " (click)=" onDeleteProfileData({ @@ -146,7 +148,7 @@ i18n size="medium" [locale]="data.locale" - [value]="assetProfile?.activitiesCount ?? 0" + [value]="assetProfile?.activitiesCount" >Activities @@ -243,11 +245,11 @@ Asset Class - {{ assetClass.label }} + @for (assetClass of assetClasses; track assetClass) { + {{ + assetClass.label + }} + } @@ -256,11 +258,11 @@ Asset Sub Class - {{ assetSubClass.label }} + @for (assetSubClass of assetSubClasses; track assetSubClass) { + {{ + assetSubClass.label + }} + } diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html index 0f4901c31..7c228941e 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -20,21 +20,24 @@ -
- - Name, symbol or ISIN - - -
-
- - Symbol - - -
+ @if (mode === 'auto') { +
+ + Name, symbol or ISIN + + +
+ } @else if (mode === 'manual') { +
+ + Symbol + + +
+ }
diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index b9c1f3a5f..9763f960f 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -1,3 +1,5 @@ +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { CacheService } from '@ghostfolio/client/services/cache.service'; import { DataService } from '@ghostfolio/client/services/data.service'; @@ -60,6 +62,7 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { private cacheService: CacheService, private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, + private notificationService: NotificationService, private userService: UserService ) { this.info = this.dataService.fetchInfo(); @@ -126,7 +129,9 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { const currencies = uniq([...this.customCurrencies, currency]); this.putAdminSetting({ key: PROPERTY_CURRENCIES, value: currencies }); } else { - alert($localize`${currency} is an invalid currency!`); + this.notificationService.alert({ + title: $localize`${currency} is an invalid currency!` + }); } } } @@ -136,39 +141,42 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { } public onDeleteCoupon(aCouponCode: string) { - const confirmation = confirm( - $localize`Do you really want to delete this coupon?` - ); - - if (confirmation === true) { - const coupons = this.coupons.filter((coupon) => { - return coupon.code !== aCouponCode; - }); - this.putAdminSetting({ key: PROPERTY_COUPONS, value: coupons }); - } + this.notificationService.confirm({ + confirmFn: () => { + const coupons = this.coupons.filter((coupon) => { + return coupon.code !== aCouponCode; + }); + this.putAdminSetting({ key: PROPERTY_COUPONS, value: coupons }); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this coupon?` + }); } public onDeleteCurrency(aCurrency: string) { - const confirmation = confirm( - $localize`Do you really want to delete this currency?` - ); - - if (confirmation === true) { - const currencies = this.customCurrencies.filter((currency) => { - return currency !== aCurrency; - }); - this.putAdminSetting({ key: PROPERTY_CURRENCIES, value: currencies }); - } + this.notificationService.confirm({ + confirmFn: () => { + const currencies = this.customCurrencies.filter((currency) => { + return currency !== aCurrency; + }); + this.putAdminSetting({ key: PROPERTY_CURRENCIES, value: currencies }); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this currency?` + }); } public onDeleteSystemMessage() { - const confirmation = confirm( - $localize`Do you really want to delete this system message?` - ); - - if (confirmation === true) { - this.putAdminSetting({ key: PROPERTY_SYSTEM_MESSAGE, value: undefined }); - } + this.notificationService.confirm({ + confirmFn: () => { + this.putAdminSetting({ + key: PROPERTY_SYSTEM_MESSAGE, + value: undefined + }); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this system message?` + }); } public onEnableDataGatheringChange(aEvent: MatSlideToggleChange) { @@ -179,20 +187,20 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { } public onFlushCache() { - const confirmation = confirm( - $localize`Do you really want to flush the cache?` - ); - - if (confirmation === true) { - this.cacheService - .flush() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(() => { - setTimeout(() => { - window.location.reload(); - }, 300); - }); - } + this.notificationService.confirm({ + confirmFn: () => { + this.cacheService + .flush() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + setTimeout(() => { + window.location.reload(); + }, 300); + }); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to flush the cache?` + }); } public onEnableUserSignupModeChange(aEvent: MatSlideToggleChange) { diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index d23210b54..a1bce7616 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -12,11 +12,7 @@
User Count
- +
@@ -24,75 +20,79 @@
-
- {{ transactionCount / userCount | number: '1.2-2' }} - per User -
+ @if (transactionCount && userCount) { +
+ {{ transactionCount / userCount | number: '1.2-2' }} + per User +
+ }
Exchange Rates
- - - - - - - + + + + + + - + + + + + Edit + + + @if (customCurrencies.includes(exchangeRate.label2)) { + + } + + + + }
- - {{ exchangeRate.label1 }}= - - {{ exchangeRate.label2 }} - - - - - - Edit - - + @for (exchangeRate of exchangeRates; track exchangeRate) { +
+ + {{ exchangeRate.label1 }}= + + {{ exchangeRate.label2 }} - -
-
-
Read-only Mode
-
- + @if (hasPermissionToToggleReadOnlyMode) { +
+
Read-only Mode
+
+ +
-
+ }
Data Gathering
@@ -141,99 +143,105 @@ />
-
-
System Message
-
-
-
{{ systemMessage | json }}
- -
- -
-
-
-
Coupons
-
- - - - - - -
{{ coupon.code }}{{ coupon.duration }} + @if (hasPermissionForSystemMessage) { +
+
System Message
+
+ @if (systemMessage) { +
+
{{ systemMessage | json }}
- - - -
-
-
- - - 7 Days - 14 Days - 30 Days - 90 Days - 180 Days - 1 Year - - +
+ } + @if (!info?.systemMessage) { - + }
-
+ } + @if (hasPermissionForSubscription) { +
+
Coupons
+
+ + @for (coupon of coupons; track coupon) { + + + + + + } +
{{ coupon.code }}{{ coupon.duration }} + + + + +
+
+
+ + + 7 Days + 14 Days + 30 Days + 90 Days + 180 Days + 1 Year + + + +
+
+
+
+ }
Housekeeping
diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.html b/apps/client/src/app/components/admin-platform/admin-platform.component.html index dc51f86cc..f5f766838 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.html +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -30,12 +30,13 @@ Name - + @if (element.url) { + + } {{ element.name }} diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.ts b/apps/client/src/app/components/admin-platform/admin-platform.component.ts index 8a2004f8d..bef4bc9b0 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.ts +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.ts @@ -1,5 +1,7 @@ import { CreatePlatformDto } from '@ghostfolio/api/app/platform/create-platform.dto'; import { UpdatePlatformDto } from '@ghostfolio/api/app/platform/update-platform.dto'; +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; @@ -45,6 +47,7 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { private dataService: DataService, private deviceService: DeviceDetectorService, private dialog: MatDialog, + private notificationService: NotificationService, private route: ActivatedRoute, private router: Router, private userService: UserService @@ -75,13 +78,13 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { } public onDeletePlatform(aId: string) { - const confirmation = confirm( - $localize`Do you really want to delete this platform?` - ); - - if (confirmation) { - this.deletePlatform(aId); - } + this.notificationService.confirm({ + confirmFn: () => { + this.deletePlatform(aId); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this platform?` + }); } public onUpdatePlatform({ id }: Platform) { diff --git a/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html b/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html index 0e85cff2c..bb99ae3a8 100644 --- a/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html +++ b/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -4,8 +4,11 @@ (keyup.enter)="platformForm.valid && onSubmit()" (ngSubmit)="onSubmit()" > -

Update platform

-

Add platform

+ @if (data.platform.id) { +

Update platform

+ } @else { +

Add platform

+ }
diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.ts b/apps/client/src/app/components/admin-tag/admin-tag.component.ts index 4a1c49309..3a48a29a2 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.ts +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.ts @@ -1,5 +1,7 @@ import { CreateTagDto } from '@ghostfolio/api/app/tag/create-tag.dto'; import { UpdateTagDto } from '@ghostfolio/api/app/tag/update-tag.dto'; +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; @@ -45,6 +47,7 @@ export class AdminTagComponent implements OnInit, OnDestroy { private dataService: DataService, private deviceService: DeviceDetectorService, private dialog: MatDialog, + private notificationService: NotificationService, private route: ActivatedRoute, private router: Router, private userService: UserService @@ -75,13 +78,13 @@ export class AdminTagComponent implements OnInit, OnDestroy { } public onDeleteTag(aId: string) { - const confirmation = confirm( - $localize`Do you really want to delete this tag?` - ); - - if (confirmation) { - this.deleteTag(aId); - } + this.notificationService.confirm({ + confirmFn: () => { + this.deleteTag(aId); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this tag?` + }); } public onUpdateTag({ id }: Tag) { diff --git a/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html b/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html index 46ab1a39e..0efb9d307 100644 --- a/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html +++ b/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -4,8 +4,11 @@ (keyup.enter)="tagForm.valid && onSubmit()" (ngSubmit)="onSubmit()" > -

Update tag

-

Add tag

+ @if (data.tag.id) { +

Update tag

+ } @else { +

Add tag

+ }
diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts index 9d38ad541..0a66977bf 100644 --- a/apps/client/src/app/components/admin-users/admin-users.component.ts +++ b/apps/client/src/app/components/admin-users/admin-users.component.ts @@ -1,3 +1,5 @@ +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; @@ -39,6 +41,7 @@ export class AdminUsersComponent implements OnDestroy, OnInit { private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, private impersonationStorageService: ImpersonationStorageService, + private notificationService: NotificationService, private userService: UserService ) { this.info = this.dataService.fetchInfo(); @@ -109,20 +112,18 @@ export class AdminUsersComponent implements OnDestroy, OnInit { } public onDeleteUser(aId: string) { - const confirmation = confirm( - $localize`Do you really want to delete this user?` - ); - - if (confirmation) { - this.dataService - .deleteUser(aId) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe({ - next: () => { + this.notificationService.confirm({ + confirmFn: () => { + this.dataService + .deleteUser(aId) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { this.fetchAdminData(); - } - }); - } + }); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this user?` + }); } public onImpersonateUser(aId: string) { diff --git a/apps/client/src/app/components/admin-users/admin-users.html b/apps/client/src/app/components/admin-users/admin-users.html index b8eaa28ab..25ab9053d 100644 --- a/apps/client/src/app/components/admin-users/admin-users.html +++ b/apps/client/src/app/components/admin-users/admin-users.html @@ -1,7 +1,7 @@
-
+
- - + @if (hasPermissionForSubscription) { + + + + + } - - + @if (hasPermissionForSubscription) { + + + + + } - - - - + @if (hasPermissionForSubscription) { + + + + + } - - + + @@ -105,18 +127,18 @@ Open Source Software @@ -124,26 +146,18 @@ Self-Hosting @@ -151,18 +165,18 @@ Use anonymously @@ -170,18 +184,18 @@ Free Plan @@ -191,18 +205,20 @@ year - - - - - + @if (product1.note || product2.note) { + + + + + + }
{{ (element.id | slice: 0 : 5) + '...' }} - + @if (element?.subscription?.type === 'Premium') { + + } - - - Country - - {{ - getEmojiFlag(element.country) - }} - + Country + + {{ + getEmojiFlag(element.country) + }} + - - - Engagement per Day - - - + Engagement per Day + + + - Last Request - - {{ formatDistanceToNow(element.lastActivity) }} - + Last Request + + {{ formatDistanceToNow(element.lastActivity) }} + - + @if (hasPermissionToImpersonateAllUsers) { + + } +@if (deviceType === 'mobile') { + +} diff --git a/apps/client/src/app/components/dialog-header/dialog-header.component.html b/apps/client/src/app/components/dialog-header/dialog-header.component.html index 7ad9e1db6..dcf487cf7 100644 --- a/apps/client/src/app/components/dialog-header/dialog-header.component.html +++ b/apps/client/src/app/components/dialog-header/dialog-header.component.html @@ -3,11 +3,8 @@ [ngClass]="{ 'text-center': position === 'center' }" >{{ title }} - +@if (deviceType !== 'mobile') { + +} diff --git a/apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html b/apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html index de6781b7e..67274ae38 100644 --- a/apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html +++ b/apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html @@ -12,12 +12,13 @@ Current Market Mood - + @if (!fearAndGreedIndex) { + + } diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index c30161030..b545c40aa 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -1,5 +1,5 @@ - + @if (user) {
Accounts -
  • - Admin Control -
  • + @if (hasPermissionToAccessAdminControl) { +
  • + Admin Control +
  • + }
  • Resources
  • -
  • - Pricing -
  • + @if ( + hasPermissionForSubscription && user?.subscription?.type === 'Basic' + ) { +
  • + Pricing +
  • + }
  • About
  • -
  • - - - - -
  • + @if (hasPermissionToAccessAssistant) { +
  • + + + + +
  • + }
  • - + @if ( + hasPermissionForSubscription && user?.subscription?.type === 'Basic' + ) { Upgrade Plan - Renew Plan + > + @if (user.subscription.offer === 'default') { + Upgrade Plan + } @else if ( + user.subscription.offer === 'renewal' || + user.subscription.offer === 'renewal-early-bird' + ) { + Renew Plan + } +
    -
    - + } + @if (user?.access?.length > 0) { + @for (accessItem of user?.access; track accessItem) { + + }
    -
    + } My Ghostfolio - Admin Control + @if (hasPermissionToAccessAdminControl) { + Admin Control + }
    Resources - Pricing + @if ( + hasPermissionForSubscription && user?.subscription?.type === 'Basic' + ) { + Pricing + }
  • - - + } + @if (user === null) {
    About -
  • - Pricing -
  • -
  • - Markets -
  • + @if (hasPermissionForSubscription) { +
  • + Pricing +
  • + } + @if (hasPermissionToAccessFearAndGreedIndex) { +
  • + Markets +
  • + }
  • Sign in
  • -
  • - Get started - -
  • + @if (currentRoute !== 'register' && hasPermissionToCreateUser) { +
  • + Get started + +
  • + } - + } diff --git a/apps/client/src/app/components/header/header.component.scss b/apps/client/src/app/components/header/header.component.scss index 6a1521795..d73bf1a8a 100644 --- a/apps/client/src/app/components/header/header.component.scss +++ b/apps/client/src/app/components/header/header.component.scss @@ -50,7 +50,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .mat-toolbar { background-color: var(--dark-background); diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index 810ab9735..2b0b434bd 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -1,6 +1,7 @@ import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto'; import { LoginWithAccessTokenDialog } from '@ghostfolio/client/components/login-with-access-token-dialog/login-with-access-token-dialog.component'; import { LayoutService } from '@ghostfolio/client/core/layout.service'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { @@ -93,6 +94,7 @@ export class HeaderComponent implements OnChanges { private dialog: MatDialog, private impersonationStorageService: ImpersonationStorageService, private layoutService: LayoutService, + private notificationService: NotificationService, private router: Router, private settingsStorageService: SettingsStorageService, private tokenStorageService: TokenStorageService, @@ -159,10 +161,8 @@ export class HeaderComponent implements OnChanges { .putUserSetting({ dateRange }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(); }); @@ -195,10 +195,8 @@ export class HeaderComponent implements OnChanges { .putUserSetting(userSetting) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(); }); @@ -246,7 +244,9 @@ export class HeaderComponent implements OnChanges { .loginAnonymous(data?.accessToken) .pipe( catchError(() => { - alert($localize`Oops! Incorrect Security Token.`); + this.notificationService.alert({ + title: $localize`Oops! Incorrect Security Token.` + }); return EMPTY; }), diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 5047fd615..a0f341cc6 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -4,6 +4,7 @@ import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-foote import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; +import { NUMERICAL_PRECISION_THRESHOLD } from '@ghostfolio/common/config'; import { DATE_FORMAT, downloadAsFile } from '@ghostfolio/common/helper'; import { DataProviderInfo, @@ -18,16 +19,24 @@ import { GfLineChartComponent } from '@ghostfolio/ui/line-chart'; import { GfPortfolioProportionChartComponent } from '@ghostfolio/ui/portfolio-proportion-chart'; import { GfValueComponent } from '@ghostfolio/ui/value'; +import { COMMA, ENTER } from '@angular/cdk/keycodes'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Component, + ElementRef, Inject, OnDestroy, - OnInit + OnInit, + ViewChild } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { + MatAutocompleteModule, + MatAutocompleteSelectedEvent +} from '@angular/material/autocomplete'; import { MatButtonModule } from '@angular/material/button'; import { MatChipsModule } from '@angular/material/chips'; import { @@ -35,14 +44,16 @@ import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; import { SortDirection } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { MatTabsModule } from '@angular/material/tabs'; +import { Router } from '@angular/router'; import { Account, Tag } from '@prisma/client'; import { format, isSameMonth, isToday, parseISO } from 'date-fns'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { Observable, of, Subject } from 'rxjs'; +import { map, startWith, takeUntil } from 'rxjs/operators'; import { HoldingDetailDialogParams } from './interfaces/interfaces'; @@ -59,9 +70,11 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces'; GfLineChartComponent, GfPortfolioProportionChartComponent, GfValueComponent, + MatAutocompleteModule, MatButtonModule, MatChipsModule, MatDialogModule, + MatFormFieldModule, MatTabsModule, NgxSkeletonLoaderModule ], @@ -72,6 +85,9 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces'; templateUrl: 'holding-detail-dialog.html' }) export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { + @ViewChild('tagInput') tagInput: ElementRef; + + public activityForm: FormGroup; public accounts: Account[]; public activities: Activity[]; public assetClass: string; @@ -85,18 +101,23 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { public dataSource: MatTableDataSource; public dividendInBaseCurrency: number; public stakeRewards: number; + public dividendInBaseCurrencyPrecision = 2; public dividendYieldPercentWithCurrencyEffect: number; public feeInBaseCurrency: number; + public filteredTagsObservable: Observable = of([]); public firstBuyDate: string; public historicalDataItems: LineChartItem[]; public investment: number; + public investmentPrecision = 2; public marketPrice: number; public maxPrice: number; public minPrice: number; public netPerformance: number; + public netPerformancePrecision = 2; public netPerformancePercent: number; public netPerformancePercentWithCurrencyEffect: number; public netPerformanceWithCurrencyEffect: number; + public netPerformanceWithCurrencyEffectPrecision = 2; public quantity: number; public quantityPrecision = 2; public stakePrecision = 2; @@ -104,10 +125,12 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { public sectors: { [name: string]: { name: string; value: number }; }; + public separatorKeysCodes: number[] = [COMMA, ENTER]; public sortColumn = 'date'; public sortDirection: SortDirection = 'desc'; public SymbolProfile: EnhancedSymbolProfile; public tags: Tag[]; + public tagsAvailable: Tag[]; public totalItems: number; public transactionCount: number; public user: User; @@ -120,10 +143,39 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { private dataService: DataService, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: HoldingDetailDialogParams, + private formBuilder: FormBuilder, + private router: Router, private userService: UserService ) {} public ngOnInit() { + const { tags } = this.dataService.fetchInfo(); + + this.activityForm = this.formBuilder.group({ + tags: [] + }); + + this.tagsAvailable = tags.map(({ id, name }) => { + return { + id, + name: translate(name) + }; + }); + + this.activityForm + .get('tags') + .valueChanges.pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((tags) => { + this.dataService + .putHoldingTags({ + tags, + dataSource: this.data.dataSource, + symbol: this.data.symbol + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + }); + this.dataService .fetchHoldingDetail({ dataSource: this.data.dataSource, @@ -165,10 +217,20 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { this.dataSource = new MatTableDataSource(orders.reverse()); this.dividendInBaseCurrency = dividendInBaseCurrency; this.stakeRewards = stakeRewards; + + if ( + this.data.deviceType === 'mobile' && + this.dividendInBaseCurrency >= NUMERICAL_PRECISION_THRESHOLD + ) { + this.dividendInBaseCurrencyPrecision = 0; + } + this.dividendYieldPercentWithCurrencyEffect = dividendYieldPercentWithCurrencyEffect; + this.feeInBaseCurrency = feeInBaseCurrency; this.firstBuyDate = firstBuyDate; + this.historicalDataItems = historicalData.map( ({ averagePrice, date, marketPrice }) => { this.benchmarkDataItems.push({ @@ -182,26 +244,82 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { }; } ); + this.investment = investment; + + if ( + this.data.deviceType === 'mobile' && + this.investment >= NUMERICAL_PRECISION_THRESHOLD + ) { + this.investmentPrecision = 0; + } + this.marketPrice = marketPrice; this.maxPrice = maxPrice; this.minPrice = minPrice; this.netPerformance = netPerformance; + + if ( + this.data.deviceType === 'mobile' && + this.netPerformance >= NUMERICAL_PRECISION_THRESHOLD + ) { + this.netPerformancePrecision = 0; + } + this.netPerformancePercent = netPerformancePercent; + this.netPerformancePercentWithCurrencyEffect = netPerformancePercentWithCurrencyEffect; + this.netPerformanceWithCurrencyEffect = netPerformanceWithCurrencyEffect; + + if ( + this.data.deviceType === 'mobile' && + this.netPerformanceWithCurrencyEffect >= + NUMERICAL_PRECISION_THRESHOLD + ) { + this.netPerformanceWithCurrencyEffectPrecision = 0; + } + this.quantity = quantity; + + if (Number.isInteger(this.quantity)) { + this.quantityPrecision = 0; + } else if (this.SymbolProfile?.assetSubClass === 'CRYPTOCURRENCY') { + if (this.quantity < 1) { + this.quantityPrecision = 7; + } else if (this.quantity < 1000) { + this.quantityPrecision = 5; + } else if (this.quantity >= 10000000) { + this.quantityPrecision = 0; + } + } + this.reportDataGlitchMail = `mailto:hi@ghostfol.io?Subject=Ghostfolio Data Glitch Report&body=Hello%0D%0DI would like to report a data glitch for%0D%0DSymbol: ${SymbolProfile?.symbol}%0DData Source: ${SymbolProfile?.dataSource}%0D%0DAdditional notes:%0D%0DCan you please take a look?%0D%0DKind regards`; this.sectors = {}; this.SymbolProfile = SymbolProfile; + this.tags = tags.map(({ id, name }) => { return { id, name: translate(name) }; }); + + this.activityForm.setValue({ tags: this.tags }, { emitEvent: false }); + + this.filteredTagsObservable = this.activityForm.controls[ + 'tags' + ].valueChanges.pipe( + startWith(this.activityForm.get('tags').value), + map((aTags: Tag[] | null) => { + return aTags + ? this.filterTags(aTags) + : this.tagsAvailable.slice(); + }) + ); + this.transactionCount = transactionCount; this.totalItems = transactionCount; this.value = value; @@ -321,6 +439,25 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { }); } + public onAddTag(event: MatAutocompleteSelectedEvent) { + this.activityForm.get('tags').setValue([ + ...(this.activityForm.get('tags').value ?? []), + this.tagsAvailable.find(({ id }) => { + return id === event.option.value; + }) + ]); + + this.tagInput.nativeElement.value = ''; + } + + public onCloneActivity(aActivity: Activity) { + this.router.navigate(['/portfolio', 'activities'], { + queryParams: { activityId: aActivity.id, createDialog: true } + }); + + this.dialogRef.close(); + } + public onClose() { this.dialogRef.close(); } @@ -345,8 +482,34 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { }); } + public onRemoveTag(aTag: Tag) { + this.activityForm.get('tags').setValue( + this.activityForm.get('tags').value.filter(({ id }) => { + return id !== aTag.id; + }) + ); + } + + public onUpdateActivity(aActivity: Activity) { + this.router.navigate(['/portfolio', 'activities'], { + queryParams: { activityId: aActivity.id, editDialog: true } + }); + + this.dialogRef.close(); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); } + + private filterTags(aTags: Tag[]) { + const tagIds = aTags.map(({ id }) => { + return id; + }); + + return this.tagsAvailable.filter(({ id }) => { + return !tagIds.includes(id); + }); + } } diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index 355934e3f..1925f6e6d 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -37,58 +37,44 @@
    - @if ( - SymbolProfile?.currency && - data.baseCurrency !== SymbolProfile?.currency - ) { - Change with currency effect - } @else { - Change - } + + @if ( + SymbolProfile?.currency && + data.baseCurrency !== SymbolProfile?.currency + ) { + Change with currency effect + } @else { + Change + } +
    - @if ( - SymbolProfile?.currency && - data.baseCurrency !== SymbolProfile?.currency - ) { - Performance with currency effect - } @else { - Performance - } + + @if ( + SymbolProfile?.currency && + data.baseCurrency !== SymbolProfile?.currency + ) { + Performance with currency effect + } @else { + Performance + } +
    InvestmentDividend @@ -347,12 +335,19 @@ [hasPermissionToFilter]="false" [hasPermissionToOpenDetails]="false" [locale]="data.locale" - [showActions]="false" + [showActions]=" + !data.hasImpersonationId && + data.hasPermissionToCreateOrder && + user?.settings?.isExperimentalFeatures && + !user?.settings?.isRestrictedView + " [showNameColumn]="false" [sortColumn]="sortColumn" [sortDirection]="sortDirection" [sortDisabled]="true" [totalItems]="totalItems" + (activityToClone)="onCloneActivity($event)" + (activityToUpdate)="onUpdateActivity($event)" (export)="onExport()" /> @@ -376,14 +371,56 @@ - @if (tags?.length > 0) { +
    +
    + + Tags + + @for (tag of activityForm.get('tags')?.value; track tag.id) { + + {{ tag.name }} + + + } + + + + @for (tag of filteredTagsObservable | async; track tag.id) { + + {{ tag.name }} + + } + + +
    +
    + + @if (!data.hasPermissionToUpdateOrder && tagsAvailable?.length > 0) {
    Tags
    - {{ - tag.name - }} + @for (tag of tags; track tag) { + {{ tag.name }} + }
    diff --git a/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts index c6cfce1ee..cb98ab3a7 100644 --- a/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts @@ -8,7 +8,9 @@ export interface HoldingDetailDialogParams { dataSource: DataSource; deviceType: string; hasImpersonationId: boolean; + hasPermissionToCreateOrder: boolean; hasPermissionToReportDataGlitch: boolean; + hasPermissionToUpdateOrder: boolean; locale: string; symbol: string; } diff --git a/apps/client/src/app/components/home-holdings/home-holdings.component.ts b/apps/client/src/app/components/home-holdings/home-holdings.component.ts index 5141bf9fa..4f7de03b5 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.component.ts +++ b/apps/client/src/app/components/home-holdings/home-holdings.component.ts @@ -1,11 +1,21 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; -import { PortfolioPosition, User } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + PortfolioPosition, + User +} from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; -import { HoldingType, ToggleOption } from '@ghostfolio/common/types'; +import { + HoldingType, + HoldingsViewMode, + ToggleOption +} from '@ghostfolio/common/types'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { FormControl } from '@angular/forms'; +import { Router } from '@angular/router'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -16,8 +26,11 @@ import { takeUntil } from 'rxjs/operators'; templateUrl: './home-holdings.html' }) export class HomeHoldingsComponent implements OnDestroy, OnInit { + public static DEFAULT_HOLDINGS_VIEW_MODE: HoldingsViewMode = 'TABLE'; + public deviceType: string; public hasImpersonationId: boolean; + public hasPermissionToAccessHoldingsChart: boolean; public hasPermissionToCreateOrder: boolean; public holdings: PortfolioPosition[]; public holdingType: HoldingType = 'ACTIVE'; @@ -26,6 +39,9 @@ export class HomeHoldingsComponent implements OnDestroy, OnInit { { label: $localize`Closed`, value: 'CLOSED' } ]; public user: User; + public viewModeFormControl = new FormControl( + HomeHoldingsComponent.DEFAULT_HOLDINGS_VIEW_MODE + ); private unsubscribeSubject = new Subject(); @@ -34,6 +50,7 @@ export class HomeHoldingsComponent implements OnDestroy, OnInit { private dataService: DataService, private deviceService: DeviceDetectorService, private impersonationStorageService: ImpersonationStorageService, + private router: Router, private userService: UserService ) {} @@ -53,38 +70,53 @@ export class HomeHoldingsComponent implements OnDestroy, OnInit { if (state?.user) { this.user = state.user; + this.hasPermissionToAccessHoldingsChart = hasPermission( + this.user.permissions, + permissions.accessHoldingsChart + ); + this.hasPermissionToCreateOrder = hasPermission( this.user.permissions, permissions.createOrder ); - this.holdings = undefined; - - this.fetchHoldings() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ holdings }) => { - this.holdings = holdings; - - this.changeDetectorRef.markForCheck(); - }); + this.initialize(); this.changeDetectorRef.markForCheck(); } }); + + this.viewModeFormControl.valueChanges + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((holdingsViewMode) => { + this.dataService + .putUserSetting({ holdingsViewMode }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((user) => { + this.user = user; + + this.changeDetectorRef.markForCheck(); + }); + }); + }); } public onChangeHoldingType(aHoldingType: HoldingType) { this.holdingType = aHoldingType; - this.holdings = undefined; - - this.fetchHoldings() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ holdings }) => { - this.holdings = holdings; + this.initialize(); + } - this.changeDetectorRef.markForCheck(); + public onSymbolClicked({ dataSource, symbol }: AssetProfileIdentifier) { + if (dataSource && symbol) { + this.router.navigate([], { + queryParams: { dataSource, symbol, holdingDetailDialog: true } }); + } } public ngOnDestroy() { @@ -104,4 +136,38 @@ export class HomeHoldingsComponent implements OnDestroy, OnInit { range: this.user?.settings?.dateRange }); } + + private initialize() { + this.viewModeFormControl.disable({ emitEvent: false }); + + if ( + this.hasPermissionToAccessHoldingsChart && + this.holdingType === 'ACTIVE' + ) { + this.viewModeFormControl.enable({ emitEvent: false }); + + this.viewModeFormControl.setValue( + this.deviceType === 'mobile' + ? HomeHoldingsComponent.DEFAULT_HOLDINGS_VIEW_MODE + : this.user?.settings?.holdingsViewMode || + HomeHoldingsComponent.DEFAULT_HOLDINGS_VIEW_MODE, + { emitEvent: false } + ); + } else if (this.holdingType === 'CLOSED') { + this.viewModeFormControl.setValue( + HomeHoldingsComponent.DEFAULT_HOLDINGS_VIEW_MODE, + { emitEvent: false } + ); + } + + this.holdings = undefined; + + this.fetchHoldings() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ holdings }) => { + this.holdings = holdings; + + this.changeDetectorRef.markForCheck(); + }); + } } diff --git a/apps/client/src/app/components/home-holdings/home-holdings.html b/apps/client/src/app/components/home-holdings/home-holdings.html index a2bd43636..bd9e57bb2 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.html +++ b/apps/client/src/app/components/home-holdings/home-holdings.html @@ -6,33 +6,63 @@
    -
    - -
    - - @if (hasPermissionToCreateOrder && holdings?.length > 0) { -
    - Manage Activities +
    + @if (user?.settings?.isExperimentalFeatures) { +
    +
    + + + + + + + + +
    +
    + } +
    +
    +
    + @if (viewModeFormControl.value === 'CHART') { + } +
    + + @if (hasPermissionToCreateOrder && holdings?.length > 0) { + + } +
    diff --git a/apps/client/src/app/components/home-holdings/home-holdings.module.ts b/apps/client/src/app/components/home-holdings/home-holdings.module.ts index f10adeab2..df951c1a8 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.module.ts +++ b/apps/client/src/app/components/home-holdings/home-holdings.module.ts @@ -1,9 +1,12 @@ import { GfToggleModule } from '@ghostfolio/client/components/toggle/toggle.module'; import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table'; +import { GfTreemapChartComponent } from '@ghostfolio/ui/treemap-chart'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; +import { MatButtonToggleModule } from '@angular/material/button-toggle'; import { RouterModule } from '@angular/router'; import { HomeHoldingsComponent } from './home-holdings.component'; @@ -12,9 +15,13 @@ import { HomeHoldingsComponent } from './home-holdings.component'; declarations: [HomeHoldingsComponent], imports: [ CommonModule, + FormsModule, GfHoldingsTableComponent, GfToggleModule, + GfTreemapChartComponent, MatButtonModule, + MatButtonToggleModule, + ReactiveFormsModule, RouterModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] diff --git a/apps/client/src/app/components/home-holdings/home-holdings.scss b/apps/client/src/app/components/home-holdings/home-holdings.scss index 5d4e87f30..d6d129a39 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.scss +++ b/apps/client/src/app/components/home-holdings/home-holdings.scss @@ -1,3 +1,9 @@ :host { display: block; + + .mat-button-toggle-group { + .mat-button-toggle-appearance-standard { + --mat-standard-button-toggle-height: 1.5rem; + } + } } diff --git a/apps/client/src/app/components/home-market/home-market.component.ts b/apps/client/src/app/components/home-market/home-market.component.ts index 481b913fb..3a42a9ebc 100644 --- a/apps/client/src/app/components/home-market/home-market.component.ts +++ b/apps/client/src/app/components/home-market/home-market.component.ts @@ -11,6 +11,7 @@ import { import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -21,6 +22,7 @@ import { takeUntil } from 'rxjs/operators'; }) export class HomeMarketComponent implements OnDestroy, OnInit { public benchmarks: Benchmark[]; + public deviceType: string; public fearAndGreedIndex: number; public fearLabel = $localize`Fear`; public greedLabel = $localize`Greed`; @@ -36,8 +38,10 @@ export class HomeMarketComponent implements OnDestroy, OnInit { public constructor( private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, + private deviceService: DeviceDetectorService, private userService: UserService ) { + this.deviceType = this.deviceService.getDeviceInfo().deviceType; this.info = this.dataService.fetchInfo(); this.isLoading = true; diff --git a/apps/client/src/app/components/home-market/home-market.html b/apps/client/src/app/components/home-market/home-market.html index 0e9d51336..c362fdd18 100644 --- a/apps/client/src/app/components/home-market/home-market.html +++ b/apps/client/src/app/components/home-market/home-market.html @@ -1,47 +1,51 @@

    Markets

    -
    -
    -
    - Last {{ numberOfDays }} Days + @if (hasPermissionToAccessFearAndGreedIndex) { +
    +
    +
    + Last {{ numberOfDays }} Days +
    + +
    - -
    -
    + }
    - + @if (isLoading) { + + }
    diff --git a/apps/client/src/app/components/home-overview/home-overview.component.ts b/apps/client/src/app/components/home-overview/home-overview.component.ts index 75e177749..a32041fce 100644 --- a/apps/client/src/app/components/home-overview/home-overview.component.ts +++ b/apps/client/src/app/components/home-overview/home-overview.component.ts @@ -3,10 +3,11 @@ import { LayoutService } from '@ghostfolio/client/core/layout.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; +import { NUMERICAL_PRECISION_THRESHOLD } from '@ghostfolio/common/config'; import { + AssetProfileIdentifier, LineChartItem, PortfolioPerformance, - UniqueAsset, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; @@ -25,7 +26,7 @@ import { takeUntil } from 'rxjs/operators'; export class HomeOverviewComponent implements OnDestroy, OnInit { public dateRangeOptions = ToggleComponent.DEFAULT_DATE_RANGE_OPTIONS; public deviceType: string; - public errors: UniqueAsset[]; + public errors: AssetProfileIdentifier[]; public hasError: boolean; public hasImpersonationId: boolean; public hasPermissionToCreateOrder: boolean; @@ -34,6 +35,7 @@ export class HomeOverviewComponent implements OnDestroy, OnInit { public isAllTimeLow: boolean; public isLoadingPerformance = true; public performance: PortfolioPerformance; + public precision = 2; public showDetails = false; public unit: string; public user: User; @@ -67,6 +69,12 @@ export class HomeOverviewComponent implements OnDestroy, OnInit { public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; + this.showDetails = + !this.user.settings.isRestrictedView && + this.user.settings.viewMode !== 'ZEN'; + + this.unit = this.showDetails ? this.user.settings.baseCurrency : '%'; + this.impersonationStorageService .onChangeHasImpersonation() .pipe(takeUntil(this.unsubscribeSubject)) @@ -81,30 +89,6 @@ export class HomeOverviewComponent implements OnDestroy, OnInit { .subscribe(() => { this.update(); }); - - this.showDetails = - !this.user.settings.isRestrictedView && - this.user.settings.viewMode !== 'ZEN'; - - this.unit = this.showDetails ? this.user.settings.baseCurrency : '%'; - } - - public onChangeDateRange(dateRange: DateRange) { - this.dataService - .putUserSetting({ dateRange }) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(() => { - this.userService.remove(); - - this.userService - .get() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe((user) => { - this.user = user; - - this.changeDetectorRef.markForCheck(); - }); - }); } public ngOnDestroy() { @@ -129,11 +113,19 @@ export class HomeOverviewComponent implements OnDestroy, OnInit { ({ date, netPerformanceInPercentageWithCurrencyEffect }) => { return { date, - value: netPerformanceInPercentageWithCurrencyEffect + value: netPerformanceInPercentageWithCurrencyEffect * 100 }; } ); + if ( + this.deviceType === 'mobile' && + this.performance.currentValueInBaseCurrency >= + NUMERICAL_PRECISION_THRESHOLD + ) { + this.precision = 0; + } + this.isLoadingPerformance = false; this.changeDetectorRef.markForCheck(); diff --git a/apps/client/src/app/components/home-overview/home-overview.html b/apps/client/src/app/components/home-overview/home-overview.html index e84b46809..8cd317428 100644 --- a/apps/client/src/app/components/home-overview/home-overview.html +++ b/apps/client/src/app/components/home-overview/home-overview.html @@ -39,22 +39,19 @@
    - - Setup accounts - - - Add activity - + @if (user?.accounts?.length === 1) { + + Setup accounts + + } @else if (user?.accounts?.length > 1) { + + Add activity + + }
    @@ -91,6 +88,7 @@ [isLoading]="isLoadingPerformance" [locale]="user?.settings?.locale" [performance]="performance" + [precision]="precision" [showDetails]="showDetails" [unit]="unit" /> diff --git a/apps/client/src/app/components/home-summary/home-summary.component.ts b/apps/client/src/app/components/home-summary/home-summary.component.ts index b67b67ce5..98fa0065a 100644 --- a/apps/client/src/app/components/home-summary/home-summary.component.ts +++ b/apps/client/src/app/components/home-summary/home-summary.component.ts @@ -9,12 +9,7 @@ import { import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; -import { - MatSnackBar, - MatSnackBarRef, - TextOnlySnackBar -} from '@angular/material/snack-bar'; -import { Router } from '@angular/router'; +import { MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -39,8 +34,6 @@ export class HomeSummaryComponent implements OnDestroy, OnInit { private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, private impersonationStorageService: ImpersonationStorageService, - private router: Router, - private snackBar: MatSnackBar, private userService: UserService ) { this.info = this.dataService.fetchInfo(); @@ -80,10 +73,8 @@ export class HomeSummaryComponent implements OnDestroy, OnInit { .putUserSetting({ emergencyFund }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -108,24 +99,6 @@ export class HomeSummaryComponent implements OnDestroy, OnInit { this.summary = summary; this.isLoading = false; - if (!this.summary) { - this.snackBarRef = this.snackBar.open( - $localize`This feature requires a subscription.`, - this.hasPermissionForSubscription - ? $localize`Upgrade Plan` - : undefined, - { duration: 6000 } - ); - - this.snackBarRef.afterDismissed().subscribe(() => { - this.snackBarRef = undefined; - }); - - this.snackBarRef.onAction().subscribe(() => { - this.router.navigate(['/' + $localize`pricing`]); - }); - } - this.changeDetectorRef.markForCheck(); }); diff --git a/apps/client/src/app/components/home-summary/home-summary.html b/apps/client/src/app/components/home-summary/home-summary.html index c00fb5770..9434f7018 100644 --- a/apps/client/src/app/components/home-summary/home-summary.html +++ b/apps/client/src/app/components/home-summary/home-summary.html @@ -13,6 +13,7 @@ [language]="user?.settings?.language" [locale]="user?.settings?.locale" [summary]="summary" + [user]="user" (emergencyFundChanged)="onChangeEmergencyFund($event)" /> diff --git a/apps/client/src/app/components/home-summary/home-summary.module.ts b/apps/client/src/app/components/home-summary/home-summary.module.ts index 75cea9962..2176d0aa7 100644 --- a/apps/client/src/app/components/home-summary/home-summary.module.ts +++ b/apps/client/src/app/components/home-summary/home-summary.module.ts @@ -3,18 +3,12 @@ import { GfPortfolioSummaryModule } from '@ghostfolio/client/components/portfoli import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatCardModule } from '@angular/material/card'; -import { RouterModule } from '@angular/router'; import { HomeSummaryComponent } from './home-summary.component'; @NgModule({ declarations: [HomeSummaryComponent], - imports: [ - CommonModule, - GfPortfolioSummaryModule, - MatCardModule, - RouterModule - ], + imports: [CommonModule, GfPortfolioSummaryModule, MatCardModule], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class GfHomeSummaryModule {} diff --git a/apps/client/src/app/components/investment-chart/investment-chart.component.html b/apps/client/src/app/components/investment-chart/investment-chart.component.html index 697ba5007..6f7b083e5 100644 --- a/apps/client/src/app/components/investment-chart/investment-chart.component.html +++ b/apps/client/src/app/components/investment-chart/investment-chart.component.html @@ -1,11 +1,12 @@ - +@if (isLoading) { + +} - + @if (data.hasPermissionToUseSocialLogin) {
    or
    -
    + }
    diff --git a/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html b/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html index 3ef55f800..a2c5c17eb 100644 --- a/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html +++ b/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html @@ -10,16 +10,18 @@ /> }
    -
    - -
    + @if (isLoading) { +
    + +
    + }
    -
    -
    - -
    -
    - + @if (showDetails) { +
    +
    + +
    +
    + +
    -
    + }
    diff --git a/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts b/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts index 4d205b761..7ca4677b0 100644 --- a/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts +++ b/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts @@ -1,3 +1,4 @@ +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { getLocale, getNumberFormatDecimal, @@ -14,7 +15,6 @@ import { ElementRef, Input, OnChanges, - OnInit, ViewChild } from '@angular/core'; import { CountUp } from 'countup.js'; @@ -26,7 +26,7 @@ import { isNumber } from 'lodash'; templateUrl: './portfolio-performance.component.html', styleUrls: ['./portfolio-performance.component.scss'] }) -export class PortfolioPerformanceComponent implements OnChanges, OnInit { +export class PortfolioPerformanceComponent implements OnChanges { @Input() deviceType: string; @Input() errors: ResponseError['errors']; @Input() isAllTimeHigh: boolean; @@ -34,16 +34,17 @@ export class PortfolioPerformanceComponent implements OnChanges, OnInit { @Input() isLoading: boolean; @Input() locale = getLocale(); @Input() performance: PortfolioPerformance; + @Input() precision: number; @Input() showDetails: boolean; @Input() unit: string; @ViewChild('value') value: ElementRef; - public constructor() {} - - public ngOnInit() {} + public constructor(private notificationService: NotificationService) {} public ngOnChanges() { + this.precision = this.precision >= 0 ? this.precision : 2; + if (this.isLoading) { if (this.value?.nativeElement) { this.value.nativeElement.innerHTML = ''; @@ -52,11 +53,7 @@ export class PortfolioPerformanceComponent implements OnChanges, OnInit { if (isNumber(this.performance?.currentValueInBaseCurrency)) { new CountUp('value', this.performance?.currentValueInBaseCurrency, { decimal: getNumberFormatDecimal(this.locale), - decimalPlaces: - this.deviceType === 'mobile' && - this.performance?.currentValueInBaseCurrency >= 100000 - ? 0 - : 2, + decimalPlaces: this.precision, duration: 1, separator: getNumberFormatGroup(this.locale) }).start(); @@ -78,12 +75,15 @@ export class PortfolioPerformanceComponent implements OnChanges, OnInit { } public onShowErrors() { - const errorMessageParts = [$localize`Market data is delayed for`]; + const errorMessageParts = []; for (const error of this.errors) { errorMessageParts.push(`${error.symbol} (${error.dataSource})`); } - alert(errorMessageParts.join('\n')); + this.notificationService.alert({ + message: errorMessageParts.join('
    '), + title: $localize`Market data is delayed for` + }); } } diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html index 6b80e87b6..2a8880225 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -80,34 +80,12 @@ />
    -
    -
    - Gross Performance - (TWR) -
    -
    - -
    -
    Fees
    - - + @if (summary?.fees || summary?.fees === 0) { + - + } Emergency Fund
    - + @if ( + hasPermissionToUpdateUserSettings && + user?.subscription?.type !== 'Basic' && + !isLoading + ) { + + }
    Liabilities
    - - + @if (summary?.liabilities || summary?.liabilities === 0) { + - + } (); diff --git a/apps/client/src/app/components/rule/rule.component.html b/apps/client/src/app/components/rule/rule.component.html index f237ed890..80b442b7b 100644 --- a/apps/client/src/app/components/rule/rule.component.html +++ b/apps/client/src/app/components/rule/rule.component.html @@ -1,43 +1,77 @@
    -
    - +
    + } @else { +
    -
    -
    - - -
    -
    - - -
    -
    -
    {{ rule?.name }}
    -
    {{ rule?.evaluation }}
    -
    + > + @if (rule?.value === true) { + + } @else if (rule?.isActive === true) { + + } @else { + + } +
    + } + @if (isLoading) { +
    + + +
    + } @else { +
    +
    {{ rule?.name }}
    +
    {{ rule?.evaluation }}
    +
    +
    + @if (hasPermissionToUpdateUserSettings) { + + + + + } +
    + }
    diff --git a/apps/client/src/app/components/rule/rule.component.scss b/apps/client/src/app/components/rule/rule.component.scss index 7246f41de..54ddce823 100644 --- a/apps/client/src/app/components/rule/rule.component.scss +++ b/apps/client/src/app/components/rule/rule.component.scss @@ -20,7 +20,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .icon-container { background-color: rgba(var(--light-primary-text), 0.05); } diff --git a/apps/client/src/app/components/rule/rule.component.ts b/apps/client/src/app/components/rule/rule.component.ts index 61514939f..da45fd0d2 100644 --- a/apps/client/src/app/components/rule/rule.component.ts +++ b/apps/client/src/app/components/rule/rule.component.ts @@ -1,10 +1,13 @@ +import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto'; import { PortfolioReportRule } from '@ghostfolio/common/interfaces'; import { ChangeDetectionStrategy, Component, + EventEmitter, Input, - OnInit + OnInit, + Output } from '@angular/core'; @Component({ @@ -14,10 +17,23 @@ import { styleUrls: ['./rule.component.scss'] }) export class RuleComponent implements OnInit { + @Input() hasPermissionToUpdateUserSettings: boolean; @Input() isLoading: boolean; @Input() rule: PortfolioReportRule; + @Output() ruleUpdated = new EventEmitter(); + public constructor() {} public ngOnInit() {} + + public onUpdateRule(rule: PortfolioReportRule) { + const settings: UpdateUserSettingDto = { + xRayRules: { + [rule.key]: { isActive: !rule.isActive } + } + }; + + this.ruleUpdated.emit(settings); + } } diff --git a/apps/client/src/app/components/rule/rule.module.ts b/apps/client/src/app/components/rule/rule.module.ts index 40e49cadd..d2cba5b25 100644 --- a/apps/client/src/app/components/rule/rule.module.ts +++ b/apps/client/src/app/components/rule/rule.module.ts @@ -1,5 +1,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatMenuModule } from '@angular/material/menu'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { RuleComponent } from './rule.component'; @@ -7,7 +9,12 @@ import { RuleComponent } from './rule.component'; @NgModule({ declarations: [RuleComponent], exports: [RuleComponent], - imports: [CommonModule, NgxSkeletonLoaderModule], + imports: [ + CommonModule, + MatButtonModule, + MatMenuModule, + NgxSkeletonLoaderModule + ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class GfRuleModule {} diff --git a/apps/client/src/app/components/rules/rules.component.html b/apps/client/src/app/components/rules/rules.component.html index b3840a79b..31e61bfc2 100644 --- a/apps/client/src/app/components/rules/rules.component.html +++ b/apps/client/src/app/components/rules/rules.component.html @@ -1,20 +1,21 @@
    - - - - - + @if (isLoading) { + + } - - - - + @if (rules !== null && rules !== undefined) { + @for (rule of rules; track rule.key) { + + } + }
    diff --git a/apps/client/src/app/components/rules/rules.component.ts b/apps/client/src/app/components/rules/rules.component.ts index 9017700c2..b8493e7be 100644 --- a/apps/client/src/app/components/rules/rules.component.ts +++ b/apps/client/src/app/components/rules/rules.component.ts @@ -1,6 +1,13 @@ +import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto'; import { PortfolioReportRule } from '@ghostfolio/common/interfaces'; -import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + EventEmitter, + Input, + Output +} from '@angular/core'; @Component({ selector: 'gf-rules', @@ -9,8 +16,15 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; styleUrls: ['./rules.component.scss'] }) export class RulesComponent { - @Input() hasPermissionToCreateOrder: boolean; + @Input() hasPermissionToUpdateUserSettings: boolean; + @Input() isLoading: boolean; @Input() rules: PortfolioReportRule[]; + @Output() rulesUpdated = new EventEmitter(); + public constructor() {} + + public onRuleUpdated(event: UpdateUserSettingDto) { + this.rulesUpdated.emit(event); + } } diff --git a/apps/client/src/app/components/rules/rules.module.ts b/apps/client/src/app/components/rules/rules.module.ts index 26ed1d83e..c62cbc3bd 100644 --- a/apps/client/src/app/components/rules/rules.module.ts +++ b/apps/client/src/app/components/rules/rules.module.ts @@ -1,5 +1,4 @@ import { GfRuleModule } from '@ghostfolio/client/components/rule/rule.module'; -import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; @@ -11,13 +10,7 @@ import { RulesComponent } from './rules.component'; @NgModule({ declarations: [RulesComponent], exports: [RulesComponent], - imports: [ - CommonModule, - GfNoTransactionsInfoComponent, - GfRuleModule, - MatButtonModule, - MatCardModule - ], + imports: [CommonModule, GfRuleModule, MatButtonModule, MatCardModule], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class GfRulesModule {} diff --git a/apps/client/src/app/components/toggle/toggle.component.html b/apps/client/src/app/components/toggle/toggle.component.html index 88713760a..4a6e0fc3d 100644 --- a/apps/client/src/app/components/toggle/toggle.component.html +++ b/apps/client/src/app/components/toggle/toggle.component.html @@ -3,12 +3,13 @@ [formControl]="optionFormControl" (change)="onValueChange()" > - {{ option.label }} + @for (option of options; track option) { + {{ option.label }} + } diff --git a/apps/client/src/app/components/toggle/toggle.component.scss b/apps/client/src/app/components/toggle/toggle.component.scss index 84ca3fd37..b61a02865 100644 --- a/apps/client/src/app/components/toggle/toggle.component.scss +++ b/apps/client/src/app/components/toggle/toggle.component.scss @@ -25,7 +25,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .mat-mdc-radio-button { &.mat-mdc-radio-checked { background-color: rgba(var(--light-dividers)); diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts index d7a41f62f..dd755a8b9 100644 --- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts +++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts @@ -1,4 +1,5 @@ import { CreateAccessDto } from '@ghostfolio/api/app/access/create-access.dto'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { validateObjectForForm } from '@ghostfolio/client/util/form.util'; @@ -33,7 +34,8 @@ export class CreateOrUpdateAccessDialog implements OnDestroy { @Inject(MAT_DIALOG_DATA) private data: CreateOrUpdateAccessDialogParams, public dialogRef: MatDialogRef, private dataService: DataService, - private formBuilder: FormBuilder + private formBuilder: FormBuilder, + private notificationService: NotificationService ) {} ngOnInit() { @@ -85,7 +87,9 @@ export class CreateOrUpdateAccessDialog implements OnDestroy { .pipe( catchError((error) => { if (error.status === StatusCodes.BAD_REQUEST) { - alert($localize`Oops! Could not grant access.`); + this.notificationService.alert({ + title: $localize`Oops! Could not grant access.` + }); } return EMPTY; diff --git a/apps/client/src/app/components/user-account-access/user-account-access.html b/apps/client/src/app/components/user-account-access/user-account-access.html index 89aadd524..f651b0419 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.html +++ b/apps/client/src/app/components/user-account-access/user-account-access.html @@ -3,25 +3,26 @@ class="align-items-center d-none d-sm-flex h3 justify-content-center mb-3 text-center" > Granted Access - + @if (user?.subscription?.type === 'Basic') { + + } -
    - - - -
    + @if (hasPermissionToCreateAccess) { +
    + + + +
    + }
    diff --git a/apps/client/src/app/components/user-account-access/user-account-access.scss b/apps/client/src/app/components/user-account-access/user-account-access.scss index 695f786f2..c19bfd343 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.scss +++ b/apps/client/src/app/components/user-account-access/user-account-access.scss @@ -1,12 +1,8 @@ :host { color: rgb(var(--dark-primary-text)); display: block; - - gf-access-table { - overflow-x: auto; - } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts index bc9212b15..e21a85418 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts @@ -1,3 +1,4 @@ +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { getDateFormatString } from '@ghostfolio/common/helper'; @@ -46,6 +47,7 @@ export class UserAccountMembershipComponent implements OnDestroy, OnInit { public constructor( private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, + private notificationService: NotificationService, private snackBar: MatSnackBar, private stripeService: StripeService, private userService: UserService @@ -96,13 +98,18 @@ export class UserAccountMembershipComponent implements OnDestroy, OnInit { return this.stripeService.redirectToCheckout({ sessionId }); }), catchError((error) => { - alert(error.message); + this.notificationService.alert({ + title: error.message + }); + throw error; }) ) .subscribe((result) => { if (result.error) { - alert(result.error.message); + this.notificationService.alert({ + title: result.error.message + }); } }); } diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.html b/apps/client/src/app/components/user-account-membership/user-account-membership.html index 369a5949b..030f5488e 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.html +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -6,64 +6,57 @@ [expiresAt]="user?.subscription?.expiresAt | date: defaultDateFormat" [name]="user?.subscription?.type" /> -
    - + @if ( hasPermissionForSubscription && hasPermissionToUpdateUserSettings - " - > - -
    - {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ - price - coupon - }} - {{ baseCurrency }} {{ price }} per year + ) { + Renew Plan + } + + @if (price) { +
    + @if (coupon) { + {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ price - coupon }} + } @else { + {{ baseCurrency }} {{ price }} + } +  per year +
    + } + } +
    + @if (!user?.subscription?.expiresAt) { + Try Premium + + + } + @if (hasPermissionToUpdateUserSettings) { + Redeem Coupon + }
    - - -
    + }
    diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.scss b/apps/client/src/app/components/user-account-membership/user-account-membership.scss index bb296c89b..0b66f6ee9 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.scss +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.scss @@ -4,6 +4,6 @@ height: 100%; } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index 4f80207aa..442be2fb4 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1,3 +1,5 @@ +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { KEY_STAY_SIGNED_IN, @@ -20,9 +22,10 @@ import { } from '@angular/core'; import { FormBuilder, Validators } from '@angular/forms'; import { MatSlideToggleChange } from '@angular/material/slide-toggle'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { format, parseISO } from 'date-fns'; import { uniq } from 'lodash'; -import { EMPTY, Subject } from 'rxjs'; +import { EMPTY, Subject, throwError } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @Component({ @@ -42,9 +45,11 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { public hasPermissionToUpdateViewMode: boolean; public hasPermissionToUpdateUserSettings: boolean; public isAccessTokenHidden = true; + public isFingerprintSupported = this.doesBrowserSupportAuthn(); public isWebAuthnEnabled: boolean; public language = document.documentElement.lang; public locales = [ + 'ca', 'de', 'de-CH', 'en-GB', @@ -66,7 +71,9 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, private formBuilder: FormBuilder, + private notificationService: NotificationService, private settingsStorageService: SettingsStorageService, + private snackBar: MatSnackBar, private tokenStorageService: TokenStorageService, private userService: UserService, public webAuthnService: WebAuthnService @@ -118,10 +125,8 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { .putUserSetting({ [aKey]: aValue }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -140,30 +145,32 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { } public onCloseAccount() { - const confirmation = confirm( - $localize`Do you really want to close your Ghostfolio account?` - ); - - if (confirmation) { - this.dataService - .deleteOwnUser({ - accessToken: this.deleteOwnUserForm.get('accessToken').value - }) - .pipe( - catchError(() => { - alert($localize`Oops! Incorrect Security Token.`); - - return EMPTY; - }), - takeUntil(this.unsubscribeSubject) - ) - .subscribe(() => { - this.tokenStorageService.signOut(); - this.userService.remove(); - - document.location.href = `/${document.documentElement.lang}`; - }); - } + this.notificationService.confirm({ + confirmFn: () => { + this.dataService + .deleteOwnUser({ + accessToken: this.deleteOwnUserForm.get('accessToken').value + }) + .pipe( + catchError(() => { + this.notificationService.alert({ + title: $localize`Oops! Incorrect Security Token.` + }); + + return EMPTY; + }), + takeUntil(this.unsubscribeSubject) + ) + .subscribe(() => { + this.tokenStorageService.signOut(); + this.userService.remove(); + + document.location.href = `/${document.documentElement.lang}`; + }); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to close your Ghostfolio account?` + }); } public onExperimentalFeaturesChange(aEvent: MatSlideToggleChange) { @@ -171,10 +178,8 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { .putUserSetting({ isExperimentalFeatures: aEvent.checked }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -209,10 +214,8 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { .putUserSetting({ isRestrictedView: aEvent.checked }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -222,19 +225,26 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { }); } - public onSignInWithFingerprintChange(aEvent: MatSlideToggleChange) { + public async onSignInWithFingerprintChange(aEvent: MatSlideToggleChange) { if (aEvent.checked) { - this.registerDevice(); - } else { - const confirmation = confirm( - $localize`Do you really want to remove this sign in method?` - ); + try { + await this.registerDevice(); + } catch { + aEvent.source.checked = false; - if (confirmation) { - this.deregisterDevice(); - } else { - this.update(); + this.changeDetectorRef.markForCheck(); } + } else { + this.notificationService.confirm({ + confirmFn: () => { + this.deregisterDevice(); + }, + discardFn: () => { + this.update(); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to remove this sign in method?` + }); } } @@ -243,10 +253,8 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { .putUserSetting({ viewMode: aEvent.checked === true ? 'ZEN' : 'DEFAULT' }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -265,35 +273,54 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { this.webAuthnService .deregister() .pipe( - takeUntil(this.unsubscribeSubject), catchError(() => { this.update(); return EMPTY; - }) + }), + takeUntil(this.unsubscribeSubject) ) .subscribe(() => { this.update(); }); } - private registerDevice() { - this.webAuthnService - .register() - .pipe( - takeUntil(this.unsubscribeSubject), - catchError(() => { - this.update(); - - return EMPTY; - }) - ) - .subscribe(() => { - this.settingsStorageService.removeSetting(KEY_STAY_SIGNED_IN); - this.settingsStorageService.removeSetting(KEY_TOKEN); + private doesBrowserSupportAuthn() { + // Authn is built on top of PublicKeyCredential: https://stackoverflow.com/a/55868189 + return typeof PublicKeyCredential !== 'undefined'; + } - this.update(); - }); + private registerDevice(): Promise { + return new Promise((resolve, reject) => { + this.webAuthnService + .register() + .pipe( + catchError((error: Error) => { + this.snackBar.open( + $localize`Oops! There was an error setting up biometric authentication.`, + undefined, + { duration: 3000 } + ); + + return throwError(() => { + return error; + }); + }), + takeUntil(this.unsubscribeSubject) + ) + .subscribe({ + next: () => { + this.settingsStorageService.removeSetting(KEY_STAY_SIGNED_IN); + this.settingsStorageService.removeSetting(KEY_TOKEN); + + this.update(); + resolve(); + }, + error: (error) => { + reject(error); + } + }); + }); } private update() { diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.html b/apps/client/src/app/components/user-account-settings/user-account-settings.html index fff38a588..3896bbb46 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.html +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -36,11 +36,9 @@ onChangeUserSetting('baseCurrency', $event.value) " > - {{ currency }} + @for (currency of currencies; track currency) { + {{ currency }} + } @@ -48,20 +46,18 @@
    Language
    -
    - If a translation is missing, kindly support us in extending it - here. -
    + @if (isCommunityLanguage()) { +
    + If a translation is missing, kindly support us in extending it + here. +
    + }
    @@ -76,6 +72,12 @@ Deutsch English + @if (user?.settings?.isExperimentalFeatures) { + Català (Community) + } @if (user?.settings?.isExperimentalFeatures) { Chinese (Community - {{ - locale - }} + @for (locale of locales; track locale) { + {{ locale }} + }
    @@ -193,15 +195,14 @@ color="primary" hideIcon="true" [checked]="isWebAuthnEnabled === true" - [disabled]="!hasPermissionToUpdateUserSettings" + [disabled]=" + !hasPermissionToUpdateUserSettings || !isFingerprintSupported + " (change)="onSignInWithFingerprintChange($event)" />
    -
    +
    Experimental Features
    diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.scss b/apps/client/src/app/components/user-account-settings/user-account-settings.scss index 22555407a..53ea0acb7 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.scss +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.scss @@ -17,6 +17,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/components/world-map-chart/world-map-chart.component.html b/apps/client/src/app/components/world-map-chart/world-map-chart.component.html index 8cd8f0a60..5de7ea9d0 100644 --- a/apps/client/src/app/components/world-map-chart/world-map-chart.component.html +++ b/apps/client/src/app/components/world-map-chart/world-map-chart.component.html @@ -1,10 +1,11 @@ - +@if (isLoading) { + +}
    diff --git a/apps/client/src/app/components/world-map-chart/world-map-chart.component.scss b/apps/client/src/app/components/world-map-chart/world-map-chart.component.scss index b317294ef..9fd9418bb 100644 --- a/apps/client/src/app/components/world-map-chart/world-map-chart.component.scss +++ b/apps/client/src/app/components/world-map-chart/world-map-chart.component.scss @@ -21,7 +21,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { ::ng-deep { .svgMap-map-wrapper { .svgMap-country { diff --git a/apps/client/src/app/core/http-response.interceptor.ts b/apps/client/src/app/core/http-response.interceptor.ts index 5314c10f1..0e24533ef 100644 --- a/apps/client/src/app/core/http-response.interceptor.ts +++ b/apps/client/src/app/core/http-response.interceptor.ts @@ -2,7 +2,6 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service'; import { InfoItem } from '@ghostfolio/common/interfaces'; -import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { HTTP_INTERCEPTORS, @@ -25,7 +24,6 @@ import { catchError, tap } from 'rxjs/operators'; @Injectable() export class HttpResponseInterceptor implements HttpInterceptor { - public hasPermissionForSubscription: boolean; public info: InfoItem; public snackBarRef: MatSnackBarRef; @@ -37,11 +35,6 @@ export class HttpResponseInterceptor implements HttpInterceptor { private webAuthnService: WebAuthnService ) { this.info = this.dataService.fetchInfo(); - - this.hasPermissionForSubscription = hasPermission( - this.info?.globalPermissions, - permissions.enableSubscription - ); } public intercept( @@ -65,12 +58,8 @@ export class HttpResponseInterceptor implements HttpInterceptor { ); } else if (!error.url.includes('/auth')) { this.snackBarRef = this.snackBar.open( - this.hasPermissionForSubscription - ? $localize`This feature requires a subscription.` - : $localize`This action is not allowed.`, - this.hasPermissionForSubscription - ? $localize`Upgrade Plan` - : undefined, + $localize`This action is not allowed.`, + undefined, { duration: 6000 } ); } diff --git a/apps/client/src/app/core/layout.service.ts b/apps/client/src/app/core/layout.service.ts index 3ba7af91e..a6fb65006 100644 --- a/apps/client/src/app/core/layout.service.ts +++ b/apps/client/src/app/core/layout.service.ts @@ -1,16 +1,39 @@ import { Injectable } from '@angular/core'; +import { DeviceDetectorService } from 'ngx-device-detector'; import { Observable, Subject } from 'rxjs'; +import { NotificationService } from './notification/notification.service'; + @Injectable({ providedIn: 'root' }) export class LayoutService { + public static readonly DEFAULT_NOTIFICATION_MAX_WIDTH = '50rem'; + public static readonly DEFAULT_NOTIFICATION_WIDTH = '75vw'; + public shouldReloadContent$: Observable; private shouldReloadSubject = new Subject(); - public constructor() { + public constructor( + private deviceService: DeviceDetectorService, + private notificationService: NotificationService + ) { this.shouldReloadContent$ = this.shouldReloadSubject.asObservable(); + + const deviceType = this.deviceService.getDeviceInfo().deviceType; + + this.notificationService.setDialogWidth( + deviceType === 'mobile' + ? '95vw' + : LayoutService.DEFAULT_NOTIFICATION_WIDTH + ); + + this.notificationService.setDialogMaxWidth( + deviceType === 'mobile' + ? '95vw' + : LayoutService.DEFAULT_NOTIFICATION_MAX_WIDTH + ); } public getShouldReloadSubject() { diff --git a/apps/client/src/app/core/notification/alert-dialog/alert-dialog.component.ts b/apps/client/src/app/core/notification/alert-dialog/alert-dialog.component.ts new file mode 100644 index 000000000..65439ec42 --- /dev/null +++ b/apps/client/src/app/core/notification/alert-dialog/alert-dialog.component.ts @@ -0,0 +1,27 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; + +import { IAlertDialogParams } from './interfaces/interfaces'; + +@Component({ + imports: [CommonModule, MatButtonModule, MatDialogModule], + selector: 'gf-alert-dialog', + standalone: true, + styleUrls: ['./alert-dialog.scss'], + templateUrl: './alert-dialog.html' +}) +export class GfAlertDialogComponent { + public discardLabel: string; + public message: string; + public title: string; + + public constructor(public dialogRef: MatDialogRef) {} + + public initialize(aParams: IAlertDialogParams) { + this.discardLabel = aParams.discardLabel; + this.message = aParams.message; + this.title = aParams.title; + } +} diff --git a/apps/client/src/app/core/notification/alert-dialog/alert-dialog.html b/apps/client/src/app/core/notification/alert-dialog/alert-dialog.html new file mode 100644 index 000000000..6602078d3 --- /dev/null +++ b/apps/client/src/app/core/notification/alert-dialog/alert-dialog.html @@ -0,0 +1,11 @@ +@if (title) { +
    +} + +@if (message) { +
    +} + +
    + +
    diff --git a/apps/client/src/app/core/notification/alert-dialog/alert-dialog.scss b/apps/client/src/app/core/notification/alert-dialog/alert-dialog.scss new file mode 100644 index 000000000..dc9093b45 --- /dev/null +++ b/apps/client/src/app/core/notification/alert-dialog/alert-dialog.scss @@ -0,0 +1,2 @@ +:host { +} diff --git a/apps/client/src/app/core/notification/alert-dialog/interfaces/interfaces.ts b/apps/client/src/app/core/notification/alert-dialog/interfaces/interfaces.ts new file mode 100644 index 000000000..7cff077a7 --- /dev/null +++ b/apps/client/src/app/core/notification/alert-dialog/interfaces/interfaces.ts @@ -0,0 +1,6 @@ +export interface IAlertDialogParams { + confirmLabel?: string; + discardLabel?: string; + message?: string; + title: string; +} diff --git a/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.component.ts b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.component.ts new file mode 100644 index 000000000..3545d39b7 --- /dev/null +++ b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.component.ts @@ -0,0 +1,41 @@ +import { CommonModule } from '@angular/common'; +import { Component, HostListener } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; + +import { ConfirmationDialogType } from './confirmation-dialog.type'; +import { IConfirmDialogParams } from './interfaces/interfaces'; + +@Component({ + imports: [CommonModule, MatButtonModule, MatDialogModule], + selector: 'gf-confirmation-dialog', + standalone: true, + styleUrls: ['./confirmation-dialog.scss'], + templateUrl: './confirmation-dialog.html' +}) +export class GfConfirmationDialogComponent { + public confirmLabel: string; + public confirmType: ConfirmationDialogType; + public discardLabel: string; + public message: string; + public title: string; + + public constructor( + public dialogRef: MatDialogRef + ) {} + + @HostListener('window:keyup', ['$event']) + public keyEvent(event: KeyboardEvent) { + if (event.key === 'Enter') { + this.dialogRef.close('confirm'); + } + } + + public initialize(aParams: IConfirmDialogParams) { + this.confirmLabel = aParams.confirmLabel; + this.confirmType = aParams.confirmType; + this.discardLabel = aParams.discardLabel; + this.message = aParams.message; + this.title = aParams.title; + } +} diff --git a/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.html b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.html new file mode 100644 index 000000000..e9e2b693c --- /dev/null +++ b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.html @@ -0,0 +1,20 @@ +@if (title) { +
    +} + +@if (message) { +
    +} + +
    + + +
    diff --git a/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.scss b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.scss new file mode 100644 index 000000000..dc9093b45 --- /dev/null +++ b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.scss @@ -0,0 +1,2 @@ +:host { +} diff --git a/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.type.ts b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.type.ts new file mode 100644 index 000000000..1fe1fc7c9 --- /dev/null +++ b/apps/client/src/app/core/notification/confirmation-dialog/confirmation-dialog.type.ts @@ -0,0 +1,5 @@ +export enum ConfirmationDialogType { + Accent = 'accent', + Primary = 'primary', + Warn = 'warn' +} diff --git a/apps/client/src/app/core/notification/confirmation-dialog/interfaces/interfaces.ts b/apps/client/src/app/core/notification/confirmation-dialog/interfaces/interfaces.ts new file mode 100644 index 000000000..834988ceb --- /dev/null +++ b/apps/client/src/app/core/notification/confirmation-dialog/interfaces/interfaces.ts @@ -0,0 +1,9 @@ +import { ConfirmationDialogType } from '../confirmation-dialog.type'; + +export interface IConfirmDialogParams { + confirmLabel?: string; + confirmType: ConfirmationDialogType; + discardLabel?: string; + message?: string; + title: string; +} diff --git a/apps/client/src/app/core/notification/interfaces/interfaces.ts b/apps/client/src/app/core/notification/interfaces/interfaces.ts new file mode 100644 index 000000000..f5a526c92 --- /dev/null +++ b/apps/client/src/app/core/notification/interfaces/interfaces.ts @@ -0,0 +1,19 @@ +import { ConfirmationDialogType } from '../confirmation-dialog/confirmation-dialog.type'; + +export interface IAlertParams { + discardFn?: () => void; + discardLabel?: string; + message?: string; + title: string; +} + +export interface IConfirmParams { + confirmFn: () => void; + confirmLabel?: string; + confirmType?: ConfirmationDialogType; + disableClose?: boolean; + discardFn?: () => void; + discardLabel?: string; + message?: string; + title: string; +} diff --git a/apps/client/src/app/core/notification/notification.module.ts b/apps/client/src/app/core/notification/notification.module.ts new file mode 100644 index 000000000..542cae928 --- /dev/null +++ b/apps/client/src/app/core/notification/notification.module.ts @@ -0,0 +1,18 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { MatDialogModule } from '@angular/material/dialog'; + +import { GfAlertDialogComponent } from './alert-dialog/alert-dialog.component'; +import { GfConfirmationDialogComponent } from './confirmation-dialog/confirmation-dialog.component'; +import { NotificationService } from './notification.service'; + +@NgModule({ + imports: [ + CommonModule, + GfAlertDialogComponent, + GfConfirmationDialogComponent, + MatDialogModule + ], + providers: [NotificationService] +}) +export class GfNotificationModule {} diff --git a/apps/client/src/app/core/notification/notification.service.ts b/apps/client/src/app/core/notification/notification.service.ts new file mode 100644 index 000000000..2e7d9de6c --- /dev/null +++ b/apps/client/src/app/core/notification/notification.service.ts @@ -0,0 +1,83 @@ +import { translate } from '@ghostfolio/ui/i18n'; + +import { Injectable } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { isFunction } from 'lodash'; + +import { GfAlertDialogComponent } from './alert-dialog/alert-dialog.component'; +import { GfConfirmationDialogComponent } from './confirmation-dialog/confirmation-dialog.component'; +import { ConfirmationDialogType } from './confirmation-dialog/confirmation-dialog.type'; +import { IAlertParams, IConfirmParams } from './interfaces/interfaces'; + +@Injectable() +export class NotificationService { + private dialogMaxWidth: string; + private dialogWidth: string; + + public constructor(private matDialog: MatDialog) {} + + public alert(aParams: IAlertParams) { + if (!aParams.discardLabel) { + aParams.discardLabel = translate('CLOSE'); + } + + const dialog = this.matDialog.open(GfAlertDialogComponent, { + autoFocus: false, + maxWidth: this.dialogMaxWidth, + width: this.dialogWidth + }); + + dialog.componentInstance.initialize({ + discardLabel: aParams.discardLabel, + message: aParams.message, + title: aParams.title + }); + + return dialog.afterClosed().subscribe((result) => { + if (isFunction(aParams.discardFn)) { + aParams.discardFn(); + } + }); + } + + public confirm(aParams: IConfirmParams) { + if (!aParams.confirmLabel) { + aParams.confirmLabel = translate('YES'); + } + + if (!aParams.discardLabel) { + aParams.discardLabel = translate('CANCEL'); + } + + const dialog = this.matDialog.open(GfConfirmationDialogComponent, { + autoFocus: false, + disableClose: aParams.disableClose || false, + maxWidth: this.dialogMaxWidth, + width: this.dialogWidth + }); + + dialog.componentInstance.initialize({ + confirmLabel: aParams.confirmLabel, + confirmType: aParams.confirmType || ConfirmationDialogType.Primary, + discardLabel: aParams.discardLabel, + message: aParams.message, + title: aParams.title + }); + + return dialog.afterClosed().subscribe((result) => { + if (result === 'confirm' && isFunction(aParams.confirmFn)) { + aParams.confirmFn(); + } else if (result === 'discard' && isFunction(aParams.discardFn)) { + aParams.discardFn(); + } + }); + } + + public setDialogMaxWidth(aDialogMaxWidth: string) { + this.dialogMaxWidth = aDialogMaxWidth; + } + + public setDialogWidth(aDialogWidth: string) { + this.dialogWidth = aDialogWidth; + } +} diff --git a/apps/client/src/app/pages/about/about-page.html b/apps/client/src/app/pages/about/about-page.html index 360cbd463..a9dbee450 100644 --- a/apps/client/src/app/pages/about/about-page.html +++ b/apps/client/src/app/pages/about/about-page.html @@ -8,22 +8,23 @@ [disablePagination]="true" [tabPanel]="tabPanel" > - - - -
    {{ tab.label }}
    -
    -
    + @for (tab of tabs; track tab) { + @if (tab.showCondition !== false) { + + +
    {{ tab.label }}
    +
    + } + } diff --git a/apps/client/src/app/pages/about/about-page.scss b/apps/client/src/app/pages/about/about-page.scss index e87d9a05b..b536ec216 100644 --- a/apps/client/src/app/pages/about/about-page.scss +++ b/apps/client/src/app/pages/about/about-page.scss @@ -2,6 +2,6 @@ color: rgb(var(--dark-primary-text)); } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.scss b/apps/client/src/app/pages/about/changelog/changelog-page.scss index aff47b345..6f9de3bcc 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page.scss +++ b/apps/client/src/app/pages/about/changelog/changelog-page.scss @@ -35,6 +35,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/about/license/license-page.scss b/apps/client/src/app/pages/about/license/license-page.scss index 39eb6792e..c19bfd343 100644 --- a/apps/client/src/app/pages/about/license/license-page.scss +++ b/apps/client/src/app/pages/about/license/license-page.scss @@ -3,6 +3,6 @@ display: block; } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.html b/apps/client/src/app/pages/about/overview/about-overview-page.html index f196b95ba..4d8ba9aa0 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.html +++ b/apps/client/src/app/pages/about/overview/about-overview-page.html @@ -21,11 +21,12 @@ title="GNU Affero General Public License" >AGPL-3.0 license - + @if (hasPermissionForStatistics) { and we share aggregated key metrics - of the platform’s performance. The project has been initiated by + of the platform’s performance + } + . The project has been initiated by Thomas Kaul @@ -35,12 +36,12 @@ title="Contributors to Ghostfolio" >contributors. - Check the system status at + @if (hasPermissionForSubscription) { + Check the system status at status.ghostfol.io. + >. + }

    If you encounter a bug or would like to suggest an improvement or a @@ -54,15 +55,16 @@ > community, post to @ghostfolio_, send an e-mail to + > + @if (user?.subscription?.type === 'Premium') { + , send an e-mail to hi@ghostfol.io + > + } or start a discussion at - - - + @if (user?.subscription?.type === 'Premium') { + + + + }

    -
    - -
    -
    - -
    + @if (hasPermissionForSubscription) { +
    + +
    + } @else { +
    + +
    + }
    diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.scss b/apps/client/src/app/pages/about/overview/about-overview-page.scss index df6759442..8b9853f3e 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.scss +++ b/apps/client/src/app/pages/about/overview/about-overview-page.scss @@ -24,7 +24,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); .about-container { diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.scss b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.scss index e3c73e9f2..b90d23078 100644 --- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.scss +++ b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.scss @@ -16,6 +16,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/accounts/accounts-page.component.ts b/apps/client/src/app/pages/accounts/accounts-page.component.ts index 244333243..3f1ed9efe 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.component.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.component.ts @@ -3,6 +3,7 @@ import { TransferBalanceDto } from '@ghostfolio/api/app/account/transfer-balance import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { AccountDetailDialog } from '@ghostfolio/client/components/account-detail-dialog/account-detail-dialog.component'; import { AccountDetailDialogParams } from '@ghostfolio/client/components/account-detail-dialog/interfaces/interfaces'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; @@ -46,6 +47,7 @@ export class AccountsPageComponent implements OnDestroy, OnInit { private deviceService: DeviceDetectorService, private dialog: MatDialog, private impersonationStorageService: ImpersonationStorageService, + private notificationService: NotificationService, private route: ActivatedRoute, private router: Router, private userService: UserService @@ -221,7 +223,11 @@ export class AccountsPageComponent implements OnDestroy, OnInit { data: { accountId: aAccountId, deviceType: this.deviceType, - hasImpersonationId: this.hasImpersonationId + hasImpersonationId: this.hasImpersonationId, + hasPermissionToCreateOrder: + !this.hasImpersonationId && + hasPermission(this.user?.permissions, permissions.createOrder) && + !this.user?.settings?.isRestrictedView }, height: this.deviceType === 'mobile' ? '97.5vh' : '80vh', width: this.deviceType === 'mobile' ? '100vw' : '50rem' @@ -301,7 +307,9 @@ export class AccountsPageComponent implements OnDestroy, OnInit { }) .pipe( catchError(() => { - alert($localize`Oops, cash balance transfer has failed.`); + this.notificationService.alert({ + title: $localize`Oops, cash balance transfer has failed.` + }); return EMPTY; }), diff --git a/apps/client/src/app/pages/accounts/accounts-page.html b/apps/client/src/app/pages/accounts/accounts-page.html index cffbe4251..6f29a4f7c 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.html +++ b/apps/client/src/app/pages/accounts/accounts-page.html @@ -2,44 +2,41 @@

    Accounts

    -
    - -
    +
    -
    - - - -
    + @if ( + !hasImpersonationId && + hasPermissionToCreateAccount && + !user.settings.isRestrictedView + ) { +
    + + + +
    + }
    diff --git a/apps/client/src/app/pages/accounts/accounts-page.scss b/apps/client/src/app/pages/accounts/accounts-page.scss index 32e9fe146..5d4e87f30 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.scss +++ b/apps/client/src/app/pages/accounts/accounts-page.scss @@ -1,7 +1,3 @@ :host { display: block; - - .accounts { - overflow-x: auto; - } } diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html index 9ff69fdb7..69734b8f9 100644 --- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10,16 +10,20 @@ From - -
    - {{ account.name }} -
    -
    + @for (account of accounts; track account) { + +
    + @if (account.Platform?.url) { + + } + {{ account.name }} +
    +
    + }
    @@ -27,16 +31,20 @@ To - -
    - {{ account.name }} -
    -
    + @for (account of accounts; track account) { + +
    + @if (account.Platform?.url) { + + } + {{ account.name }} +
    +
    + }
    diff --git a/apps/client/src/app/pages/admin/admin-page.html b/apps/client/src/app/pages/admin/admin-page.html index 360cbd463..a9dbee450 100644 --- a/apps/client/src/app/pages/admin/admin-page.html +++ b/apps/client/src/app/pages/admin/admin-page.html @@ -8,22 +8,23 @@ [disablePagination]="true" [tabPanel]="tabPanel" > - - - -
    {{ tab.label }}
    -
    -
    + @for (tab of tabs; track tab) { + @if (tab.showCondition !== false) { + + +
    {{ tab.label }}
    +
    + } + } diff --git a/apps/client/src/app/pages/admin/admin-page.scss b/apps/client/src/app/pages/admin/admin-page.scss index e87d9a05b..b536ec216 100644 --- a/apps/client/src/app/pages/admin/admin-page.scss +++ b/apps/client/src/app/pages/admin/admin-page.scss @@ -2,6 +2,6 @@ color: rgb(var(--dark-primary-text)); } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html index d700b9c56..e0364f747 100644 --- a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html +++ b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -131,9 +131,9 @@

    Du erreichst mich per E-Mail unter - hi@ghostfol.io oder auf - Twitter - @ghostfolio_. + hi@ghostfol.io oder auf X + (ehemals Twitter) + @ghostfolio_.

    Ich freue mich, von dir zu hören.
    diff --git a/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html b/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html index 6670e0333..af98b08f6 100644 --- a/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html +++ b/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -126,8 +126,9 @@

    You can reach me by e-mail at - hi@ghostfol.io or on Twitter - @ghostfolio_. + hi@ghostfol.io or on X + (formerly Twitter) + @ghostfolio_.

    I look forward to hearing from you.
    diff --git a/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html b/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html index d5009a2d1..69da8db2b 100644 --- a/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html +++ b/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html @@ -39,7 +39,7 @@

    At the end of 2021, Ghostfolio reached an important milestone: - 100 stars on GitHub. This is really exciting with almost no marketing. I am a @@ -100,9 +100,10 @@ of users. In the future, I would like to involve more contributors to further extend the functionality of Ghostfolio (e.g. with new reports). Get in touch with me by e-mail at - hi@ghostfol.io or on Twitter - @ghostfolio_ if - you are interested, I’m happy to discuss ideas. + hi@ghostfol.io or on X + (formerly Twitter) + @ghostfolio_ if you are + interested, I’m happy to discuss ideas.

    I would like to say thank you for all your feedback and support diff --git a/apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html b/apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html index 0366dd9af..f14a4f32f 100644 --- a/apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html +++ b/apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html @@ -90,8 +90,9 @@

    If you would like to provide feedback or get involved in further development of Ghostfolio, please get in touch by e-mail via - hi@ghostfol.io or on Twitter - @ghostfolio_. + hi@ghostfol.io or on X + (formerly Twitter) + @ghostfolio_.

    I look forward to hearing from you.
    diff --git a/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html b/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html index 9dea1eb2a..50ed7398d 100644 --- a/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html +++ b/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html @@ -34,9 +34,9 @@ >Slack as well as 100 followers on - Twitter. If you have - not joined yet, this is a good time to make sure you do not miss out - on any future updates. + Twitter. If you have not + joined yet, this is a good time to make sure you do not miss out on + any future updates.

    @@ -91,9 +91,10 @@ engineering to realize the full potential of open source software. If you are a web developer and interested in personal finance, please get in touch by e-mail via - hi@ghostfol.io or on Twitter - @ghostfolio_. We - are happy to discuss ideas. + hi@ghostfol.io or on X + (formerly Twitter) + @ghostfolio_. We are + happy to discuss ideas.

    We would like to say thank you for all your feedback and support diff --git a/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html index 71725e3f6..eeeb41577 100644 --- a/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html +++ b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html @@ -84,8 +84,8 @@ href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" >Slack - community or get in touch on Twitter - @ghostfolio_ or by + community or get in touch on X (formerly Twitter) + @ghostfolio_ or by e-mail via hi@ghostfol.io.

    diff --git a/apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html b/apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html index 1f4da92b0..9a659e22a 100644 --- a/apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html +++ b/apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html @@ -90,8 +90,8 @@ target="_blank" >Slack - community or via Twitter - @ghostfolio_. We look forward to hearing from you!

    diff --git a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html index 11b05c84c..f217188b0 100644 --- a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html +++ b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html @@ -122,8 +122,9 @@ >Slack community or connect with - @ghostfolio_ on - Twitter. We are happy to discuss ideas and get you involved. + @ghostfolio_ on X + (formerly Twitter). We are happy to discuss ideas and get you + involved.

    Thank you for all your feedback and support.

    diff --git a/apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html b/apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html index b7ce5b67e..77d4af21c 100644 --- a/apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html +++ b/apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html @@ -25,7 +25,7 @@

    OSS Friends started as a simple post diff --git a/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html b/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html index d6e9af76a..6db5194b1 100644 --- a/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html +++ b/apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html @@ -123,7 +123,7 @@

  • On - X + X (formerly Twitter), over 300 investors and personal finance enthusiasts follow Ghostfolio, keen to stay updated on the latest @@ -151,7 +151,7 @@

    Follow us on X: For release updates and market insights, follow - Ghostfolio on X. It is the perfect place to stay informed and connect with our team. diff --git a/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html b/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html index 08aed42db..5003cefa5 100644 --- a/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html +++ b/apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html @@ -89,7 +89,7 @@ >Slack community or get in touch on X - @ghostfolio_. + @ghostfolio_.

    We look forward to hearing from you.
    diff --git a/apps/client/src/app/pages/blog/blog-page.html b/apps/client/src/app/pages/blog/blog-page.html index cd05d065c..aa139f68e 100644 --- a/apps/client/src/app/pages/blog/blog-page.html +++ b/apps/client/src/app/pages/blog/blog-page.html @@ -10,11 +10,11 @@ @if (hasPermissionForSubscription) { - +

    @@ -35,11 +35,11 @@ } - +
    @@ -61,11 +61,11 @@ - +
    @@ -85,11 +85,11 @@ - +
    @@ -111,11 +111,11 @@ - +
    @@ -137,11 +137,11 @@ - +
    @@ -164,11 +164,11 @@ - +
    @@ -190,11 +190,11 @@ - +
    @@ -216,11 +216,11 @@ - +
    @@ -242,11 +242,11 @@ - +
    @@ -268,11 +268,11 @@ - +
    @@ -295,11 +295,11 @@ @if (hasPermissionForSubscription) { - +
    @@ -320,11 +320,11 @@ } - +
    @@ -344,11 +344,11 @@ - +
    @@ -368,11 +368,11 @@ - +
    @@ -394,11 +394,11 @@ - +
    @@ -420,11 +420,11 @@ - +
    @@ -446,11 +446,11 @@ - +
    @@ -470,11 +470,11 @@ - +
    diff --git a/apps/client/src/app/pages/blog/blog-page.scss b/apps/client/src/app/pages/blog/blog-page.scss index 39eb6792e..e576551f2 100644 --- a/apps/client/src/app/pages/blog/blog-page.scss +++ b/apps/client/src/app/pages/blog/blog-page.scss @@ -1,8 +1,14 @@ :host { color: rgb(var(--dark-primary-text)); display: block; + + .mat-mdc-card { + &:hover { + border-color: var(--gf-theme-primary-500); + } + } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/demo/demo-page.component.ts b/apps/client/src/app/pages/demo/demo-page.component.ts index cf09d77aa..720bb4974 100644 --- a/apps/client/src/app/pages/demo/demo-page.component.ts +++ b/apps/client/src/app/pages/demo/demo-page.component.ts @@ -1,15 +1,14 @@ +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { InfoItem } from '@ghostfolio/common/interfaces'; -import { CommonModule } from '@angular/common'; import { Component, OnDestroy } from '@angular/core'; import { Router } from '@angular/router'; import { Subject } from 'rxjs'; @Component({ host: { class: 'page' }, - imports: [CommonModule], selector: 'gf-demo-page', standalone: true, templateUrl: './demo-page.html' @@ -21,6 +20,7 @@ export class GfDemoPageComponent implements OnDestroy { public constructor( private dataService: DataService, + private notificationService: NotificationService, private router: Router, private tokenStorageService: TokenStorageService ) { @@ -31,9 +31,9 @@ export class GfDemoPageComponent implements OnDestroy { const hasToken = this.tokenStorageService.getToken()?.length > 0; if (hasToken) { - alert( - $localize`As you are already logged in, you cannot access the demo account.` - ); + this.notificationService.alert({ + title: $localize`As you are already logged in, you cannot access the demo account.` + }); } else { this.tokenStorageService.saveToken(this.info.demoAuthToken, true); } diff --git a/apps/client/src/app/pages/faq/faq-page.html b/apps/client/src/app/pages/faq/faq-page.html index 360cbd463..a9dbee450 100644 --- a/apps/client/src/app/pages/faq/faq-page.html +++ b/apps/client/src/app/pages/faq/faq-page.html @@ -8,22 +8,23 @@ [disablePagination]="true" [tabPanel]="tabPanel" > - - - -
    {{ tab.label }}
    -
    - + @for (tab of tabs; track tab) { + @if (tab.showCondition !== false) { + + +
    {{ tab.label }}
    +
    + } + } diff --git a/apps/client/src/app/pages/faq/faq-page.scss b/apps/client/src/app/pages/faq/faq-page.scss index e87d9a05b..b536ec216 100644 --- a/apps/client/src/app/pages/faq/faq-page.scss +++ b/apps/client/src/app/pages/faq/faq-page.scss @@ -2,6 +2,6 @@ color: rgb(var(--dark-primary-text)); } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/faq/overview/faq-overview-page.html b/apps/client/src/app/pages/faq/overview/faq-overview-page.html index 925871a60..fea3bba55 100644 --- a/apps/client/src/app/pages/faq/overview/faq-overview-page.html +++ b/apps/client/src/app/pages/faq/overview/faq-overview-page.html @@ -122,15 +122,16 @@ > community, @ghostfolio_, + > + @if (user?.subscription?.type === 'Premium') { + , hi@ghostfol.io + > + } or Slack community, post to @ghostfolio_, send an e-mail to + > + @if (user?.subscription?.type === 'Premium') { + , send an e-mail to hi@ghostfol.io + > + } or start a discussion at - - - I cannot find my broker in the list of platforms. What can I - do? - - - Please send an e-mail with the web address of your broker to - hi@ghostfol.io and we are - happy to add it. - - + @if (user?.subscription?.type === 'Premium') { + + + I cannot find my broker in the list of platforms. What can I + do? + + + Please send an e-mail with the web address of your broker to + hi@ghostfol.io and we are + happy to add it. + + + } Which devices are supported? @@ -153,15 +151,16 @@ >Slack community, post to @ghostfolio_, send an e-mail to + > + @if (user?.subscription?.type === 'Premium') { + , send an e-mail to hi@ghostfol.io + > + } or start a discussion at + + + What is the concept of platforms? + + + Platforms are used to group multiple accounts, such as a savings + account and a trading account at the same bank. By assigning accounts + to the same platform, they are displayed with a unified icon and you + gain insights into platform-specific risks. + + How do I add a new platform? @@ -148,6 +159,21 @@ and desktop computers. + + + Is there a mobile app for the self-hosting version of Ghostfolio + available in the app store? + + No, there is no mobile app for the self-hosting version of Ghostfolio + available in the app store. However, you can add the web app to your + home screen (e.g. by selecting Add to Home screen in + Google Chrome), which provides the same user + experience. + Slack community, post to @ghostfolio_ diff --git a/apps/client/src/app/pages/features/features-page.component.ts b/apps/client/src/app/pages/features/features-page.component.ts index 3fe7f3db1..39ed6d38e 100644 --- a/apps/client/src/app/pages/features/features-page.component.ts +++ b/apps/client/src/app/pages/features/features-page.component.ts @@ -4,7 +4,6 @@ import { InfoItem, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; -import { CommonModule } from '@angular/common'; import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; @@ -14,7 +13,6 @@ import { Subject, takeUntil } from 'rxjs'; @Component({ host: { class: 'page' }, imports: [ - CommonModule, GfPremiumIndicatorComponent, MatButtonModule, MatCardModule, diff --git a/apps/client/src/app/pages/features/features-page.html b/apps/client/src/app/pages/features/features-page.html index 16a126b51..5333805f2 100644 --- a/apps/client/src/app/pages/features/features-page.html +++ b/apps/client/src/app/pages/features/features-page.html @@ -145,8 +145,9 @@

    Check the rate of return of your portfolio for - Today, YTD, 1Y, - 5Y, and Max. + Today, WTD, MTD, + YTD, 1Y, 5Y, and + Max.

    @@ -241,9 +242,11 @@

    Multi-Language

    Use Ghostfolio in multiple languages: English, - Dutch, French, German, Italian, - Portuguese, Spanish and Turkish are currently - supported. + + + Dutch, French, German, Italian, + + Portuguese, Spanish and Turkish are currently supported.

    diff --git a/apps/client/src/app/pages/features/features-page.scss b/apps/client/src/app/pages/features/features-page.scss index 4a8680714..c3109fdf7 100644 --- a/apps/client/src/app/pages/features/features-page.scss +++ b/apps/client/src/app/pages/features/features-page.scss @@ -12,6 +12,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/home/home-page.html b/apps/client/src/app/pages/home/home-page.html index 360cbd463..a9dbee450 100644 --- a/apps/client/src/app/pages/home/home-page.html +++ b/apps/client/src/app/pages/home/home-page.html @@ -8,22 +8,23 @@ [disablePagination]="true" [tabPanel]="tabPanel" > - - - -
    {{ tab.label }}
    -
    -
    + @for (tab of tabs; track tab) { + @if (tab.showCondition !== false) { + + +
    {{ tab.label }}
    +
    + } + } diff --git a/apps/client/src/app/pages/home/home-page.scss b/apps/client/src/app/pages/home/home-page.scss index e87d9a05b..b536ec216 100644 --- a/apps/client/src/app/pages/home/home-page.scss +++ b/apps/client/src/app/pages/home/home-page.scss @@ -2,6 +2,6 @@ color: rgb(var(--dark-primary-text)); } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/i18n/i18n-page.component.ts b/apps/client/src/app/pages/i18n/i18n-page.component.ts index 2bcac9d88..9718ac328 100644 --- a/apps/client/src/app/pages/i18n/i18n-page.component.ts +++ b/apps/client/src/app/pages/i18n/i18n-page.component.ts @@ -1,10 +1,8 @@ -import { CommonModule } from '@angular/common'; import { Component, OnInit } from '@angular/core'; import { Subject } from 'rxjs'; @Component({ host: { class: 'page' }, - imports: [CommonModule], selector: 'gf-i18n-page', standalone: true, styleUrls: ['./i18n-page.scss'], diff --git a/apps/client/src/app/pages/landing/landing-page.html b/apps/client/src/app/pages/landing/landing-page.html index 331defae4..72de38c20 100644 --- a/apps/client/src/app/pages/landing/landing-page.html +++ b/apps/client/src/app/pages/landing/landing-page.html @@ -32,7 +32,7 @@
    - + @if (hasPermissionToCreateUser) { Get Started - - -
    - or -
    + } + @if (hasPermissionForDemo) { + @if (hasPermissionToCreateUser) { +
    or
    + } Live Demo -
    + }
    -
    -
    - + - +
    - Stars on GitHub - -
    - +
    - Pulls on Docker Hub - + Pulls on Docker Hub + +
    -
    + }
    @@ -184,6 +186,14 @@ title="Sackgeld.com – Apps für ein höheres Sackgeld" >
    +
    + +
    {{ testimonial.author }} - {{ testimonial.author }}, - {{ testimonial.country }} + @for (testimonial of testimonials; track testimonial) { +
    +
    + +
    +
    {{ testimonial.quote }}
    +
    + — + @if (testimonial.url) { + {{ + testimonial.author + }} + } @else { + {{ testimonial.author }} + } + , + {{ testimonial.country }} +
    -
    + }
    -
    -
    -

    - Members from around the globe are using - Ghostfolio Premium -

    -
    -
    - + @if (hasPermissionForSubscription) { +
    +
    +

    + Members from around the globe are using + Ghostfolio Premium +

    +
    +
    + +
    -
    + } -
    -
    -

    - How does Ghostfolio work? -

    -

    Get started in only 3 steps

    -
    -
    - - -
    -
    Sign up anonymously*
    -
    - * no e-mail address nor credit card required + @if (hasPermissionForSubscription) { +
    +
    +

    + How does Ghostfolio work? +

    +

    Get started in only 3 steps

    +
    +
    + + +
    +
    Sign up anonymously*
    +
    + * no e-mail address nor credit card required +
    -
    -
    1
    - - -
    -
    - - -
    -
    - Add any of your historical transactions +
    1
    + + +
    +
    + + +
    +
    + Add any of your historical transactions +
    -
    -
    2
    - - -
    -
    - - -
    -
    - Get valuable insights of your portfolio composition +
    2
    + + +
    +
    + + +
    +
    + Get valuable insights of your portfolio composition +
    -
    -
    3
    - - +
    3
    + + +
    -
    + } -
    -
    -

    Are you ready?

    -

    - Join now - or check out the example account -

    -
    - - Get Started - - -
    or
    - Live Demo -
    + @if (hasPermissionToCreateUser) { +
    +
    +

    + Are you ready? +

    +

    + Join now + @if (hasPermissionForDemo) { + or check out the example account + } +

    +
    + + Get Started + + @if (hasPermissionForDemo) { +
    or
    + Live Demo + } +
    -
    + }
    diff --git a/apps/client/src/app/pages/landing/landing-page.scss b/apps/client/src/app/pages/landing/landing-page.scss index 0b8736819..4c0c14efd 100644 --- a/apps/client/src/app/pages/landing/landing-page.scss +++ b/apps/client/src/app/pages/landing/landing-page.scss @@ -80,6 +80,11 @@ mask-image: url('/assets/images/logo-sackgeld.png'); } + &.logo-selfh-st { + mask-image: url('/assets/images/logo-selfh-st.svg'); + max-height: 1.25rem; + } + &.logo-sourceforge { mask-image: url('/assets/images/logo-sourceforge.svg'); } @@ -115,7 +120,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .button-container { .mat-mdc-outlined-button { background-color: var(--dark-background); @@ -131,6 +136,7 @@ &.logo-privacy-tools, &.logo-reddit, &.logo-sackgeld, + &.logo-selfh-st, &.logo-sourceforge, &.logo-umbrel, &.logo-unraid { diff --git a/apps/client/src/app/pages/open/open-page.scss b/apps/client/src/app/pages/open/open-page.scss index e58d9f237..65c9b4e3c 100644 --- a/apps/client/src/app/pages/open/open-page.scss +++ b/apps/client/src/app/pages/open/open-page.scss @@ -14,6 +14,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts index c96921c30..7cd89d62f 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts @@ -16,7 +16,6 @@ import { PageEvent } from '@angular/material/paginator'; import { Sort, SortDirection } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { ActivatedRoute, Router } from '@angular/router'; -import { Order as OrderModel } from '@prisma/client'; import { format, parseISO } from 'date-fns'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject, Subscription } from 'rxjs'; @@ -33,7 +32,6 @@ import { ImportActivitiesDialogParams } from './import-activities-dialog/interfa templateUrl: './activities-page.html' }) export class ActivitiesPageComponent implements OnDestroy, OnInit { - public activities: Activity[]; public dataSource: MatTableDataSource; public deviceType: string; public hasImpersonationId: boolean; @@ -64,20 +62,24 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((params) => { if (params['createDialog']) { - this.openCreateActivityDialog(); + if (params['activityId']) { + this.dataService + .fetchActivity(params['activityId']) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((activity) => { + this.openCreateActivityDialog(activity); + }); + } else { + this.openCreateActivityDialog(); + } } else if (params['editDialog']) { - if (this.activities) { - const activity = this.activities.find(({ id }) => { - return id === params['activityId']; - }); - - this.openUpdateActivityDialog(activity); - } else if (this.dataSource) { - const activity = this.dataSource.data.find(({ id }) => { - return id === params['activityId']; - }); - - this.openUpdateActivityDialog(activity); + if (params['activityId']) { + this.dataService + .fetchActivity(params['activityId']) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((activity) => { + this.openUpdateActivityDialog(activity); + }); } else { this.router.navigate(['.'], { relativeTo: this.route }); } @@ -249,7 +251,7 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { this.fetchActivities(); } - public onUpdateActivity(aActivity: OrderModel) { + public onUpdateActivity(aActivity: Activity) { this.router.navigate([], { queryParams: { activityId: aActivity.id, editDialog: true } }); diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index 43b58b239..64826b3b3 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -21,7 +21,7 @@ import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { AssetClass, AssetSubClass, Tag, Type } from '@prisma/client'; import { isUUID } from 'class-validator'; -import { isToday } from 'date-fns'; +import { isAfter, isToday } from 'date-fns'; import { EMPTY, Observable, Subject, lastValueFrom, of } from 'rxjs'; import { catchError, delay, map, startWith, takeUntil } from 'rxjs/operators'; @@ -51,9 +51,10 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { public filteredTagsObservable: Observable = of([]); public isLoading = false; public isToday = isToday; + public mode: 'create' | 'update'; public platforms: { id: string; name: string }[]; - public separatorKeysCodes: number[] = [ENTER, COMMA]; - public tags: Tag[] = []; + public separatorKeysCodes: number[] = [COMMA, ENTER]; + public tagsAvailable: Tag[] = []; public total = 0; public typesTranslationMap = new Map(); public Validators = Validators; @@ -71,6 +72,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { ) {} public ngOnInit() { + this.mode = this.data.activity.id ? 'update' : 'create'; this.locale = this.data.user?.settings?.locale; this.dateAdapter.setLocale(this.locale); @@ -79,7 +81,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.currencies = currencies; this.defaultDateFormat = getDateFormatString(this.locale); this.platforms = platforms; - this.tags = tags.map(({ id, name }) => { + this.tagsAvailable = tags.map(({ id, name }) => { return { id, name: translate(name) @@ -92,7 +94,9 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.activityForm = this.formBuilder.group({ accountId: [ - this.data.accounts.length === 1 && !this.data.activity?.accountId + this.data.accounts.length === 1 && + !this.data.activity?.accountId && + this.mode === 'create' ? this.data.accounts[0].id : this.data.activity?.accountId, Validators.required @@ -287,7 +291,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { ].valueChanges.pipe( startWith(this.activityForm.get('tags').value), map((aTags: Tag[] | null) => { - return aTags ? this.filterTags(aTags) : this.tags.slice(); + return aTags ? this.filterTags(aTags) : this.tagsAvailable.slice(); }) ); @@ -430,13 +434,22 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { }); } + public dateFilter(aDate: Date) { + if (!aDate) { + return true; + } + + return isAfter(aDate, new Date(0)); + } + public onAddTag(event: MatAutocompleteSelectedEvent) { this.activityForm.get('tags').setValue([ ...(this.activityForm.get('tags').value ?? []), - this.tags.find(({ id }) => { + this.tagsAvailable.find(({ id }) => { return id === event.option.value; }) ]); + this.tagInput.nativeElement.value = ''; } @@ -475,29 +488,29 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { }; try { - if (this.data.activity.id) { - (activity as UpdateOrderDto).id = this.data.activity.id; + if (this.mode === 'create') { + (activity as CreateOrderDto).updateAccountBalance = + this.activityForm.get('updateAccountBalance').value; await validateObjectForForm({ - classDto: UpdateOrderDto, + classDto: CreateOrderDto, form: this.activityForm, ignoreFields: ['dataSource', 'date'], - object: activity as UpdateOrderDto + object: activity }); - this.dialogRef.close(activity as UpdateOrderDto); + this.dialogRef.close(activity as CreateOrderDto); } else { - (activity as CreateOrderDto).updateAccountBalance = - this.activityForm.get('updateAccountBalance').value; + (activity as UpdateOrderDto).id = this.data.activity.id; await validateObjectForForm({ - classDto: CreateOrderDto, + classDto: UpdateOrderDto, form: this.activityForm, ignoreFields: ['dataSource', 'date'], - object: activity + object: activity as UpdateOrderDto }); - this.dialogRef.close(activity as CreateOrderDto); + this.dialogRef.close(activity as UpdateOrderDto); } } catch (error) { console.error(error); @@ -510,12 +523,12 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { } private filterTags(aTags: Tag[]) { - const tagIds = aTags.map((tag) => { - return tag.id; + const tagIds = aTags.map(({ id }) => { + return id; }); - return this.tags.filter((tag) => { - return !tagIds.includes(tag.id); + return this.tagsAvailable.filter(({ id }) => { + return !tagIds.includes(id); }); } diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 9ab440098..a838eefe0 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -4,8 +4,11 @@ (keyup.enter)="activityForm.valid && onSubmit()" (ngSubmit)="onSubmit()" > -

    Update activity

    -

    Add activity

    + @if (mode === 'create') { +

    Add activity

    + } @else { +

    Update activity

    + }
    @@ -81,37 +84,38 @@
    -
    +
    Account - - -
    - {{ account.name }} -
    -
    + @if ( + !activityForm.get('accountId').hasValidator(Validators.required) || + (!activityForm.get('accountId').value && mode === 'update') + ) { + + } + @for (account of data.accounts; track account) { + +
    + @if (account.Platform?.url) { + + } + {{ account.name }} +
    +
    + }
    -
    +
    Update Cash Balance @@ -147,9 +151,9 @@ Currency - {{ - currency - }} + @for (currency of currencies; track currency) { + {{ currency }} + }
    @@ -162,7 +166,12 @@
    Date - + - - Dividend - Value - Value - Value - Unit Price - + + @switch (activityForm.get('type')?.value) { + @case ('DIVIDEND') { + Dividend + } + @case ('INTEREST') { + Value + } + @case ('ITEM') { + Value + } + @case ('LIABILITY') { + Value + } + @default { + Unit Price + } + } - - {{ currency }} - + @for (currency of currencies; track currency) { + + {{ currency }} + + }
    - Oops! Could not get the historical exchange rate - fromOops! Could not get the historical exchange rate + from + {{ + activityForm.get('date')?.value | date: defaultDateFormat + }} - {{ - activityForm.get('date')?.value | date: defaultDateFormat - }} + } - + @if ( + currentMarketPrice && + (data.activity.type === 'BUY' || data.activity.type === 'SELL') && + isToday(activityForm.get('date')?.value) + ) { + + }
    - - Dividend - Value - Value - Value - Value - Unit Price - + + @switch (activityForm.get('type')?.value) { + @case ('DIVIDEND') { + Dividend + } + @case ('FEE') { + Value + } + @case ('INTEREST') { + Value + } + @case ('ITEM') { + Value + } + @case ('LIABILITY') { + Value + } + @default { + Unit Price + } + } {{ @@ -297,15 +323,17 @@ > {{ activityForm.get('currencyOfUnitPrice').value }}
    - Oops! Could not get the historical exchange rate fromOops! Could not get the historical exchange rate + from + {{ + activityForm.get('date')?.value | date: defaultDateFormat + }} - {{ - activityForm.get('date')?.value | date: defaultDateFormat - }} + }
    @@ -337,11 +365,11 @@ Asset Class - {{ assetClass.label }} + @for (assetClass of assetClasses; track assetClass) { + {{ + assetClass.label + }} + }
    @@ -353,27 +381,28 @@ Asset Sub Class - {{ assetSubClass.label }} + @for (assetSubClass of assetSubClasses; track assetSubClass) { + {{ + assetSubClass.label + }} + }
    -
    +
    Tags - - {{ tag.name }} - - + @for (tag of activityForm.get('tags')?.value; track tag.id) { + + {{ tag.name }} + + + } - - {{ tag.name }} - + @for (tag of filteredTagsObservable | async; track tag.id) { + + {{ tag.name }} + + }
    diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.scss b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.scss index 6b1415dcb..5af305f9c 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.scss +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.scss @@ -18,7 +18,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .mat-mdc-dialog-content { .mat-datepicker-input { &.mat-mdc-input-element:disabled { diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts index b59994811..1848c5306 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -38,6 +38,7 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces'; export class ImportActivitiesDialog implements OnDestroy { public accounts: CreateAccountDto[] = []; public activities: Activity[] = []; + public assetProfileForm: FormGroup; public dataSource: MatTableDataSource; public details: any[] = []; public deviceType: string; @@ -53,7 +54,6 @@ export class ImportActivitiesDialog implements OnDestroy { public sortDirection: SortDirection = 'desc'; public stepperOrientation: StepperOrientation; public totalItems: number; - public uniqueAssetForm: FormGroup; private unsubscribeSubject = new Subject(); @@ -73,8 +73,8 @@ export class ImportActivitiesDialog implements OnDestroy { this.stepperOrientation = this.deviceType === 'mobile' ? 'vertical' : 'horizontal'; - this.uniqueAssetForm = this.formBuilder.group({ - uniqueAsset: [undefined, Validators.required] + this.assetProfileForm = this.formBuilder.group({ + assetProfileIdentifier: [undefined, Validators.required] }); if ( @@ -85,7 +85,7 @@ export class ImportActivitiesDialog implements OnDestroy { this.dialogTitle = $localize`Import Dividends`; this.mode = 'DIVIDEND'; - this.uniqueAssetForm.get('uniqueAsset').disable(); + this.assetProfileForm.get('assetProfileIdentifier').disable(); this.dataService .fetchPortfolioHoldings({ @@ -102,7 +102,7 @@ export class ImportActivitiesDialog implements OnDestroy { this.holdings = sortBy(holdings, ({ name }) => { return name.toLowerCase(); }); - this.uniqueAssetForm.get('uniqueAsset').enable(); + this.assetProfileForm.get('assetProfileIdentifier').enable(); this.isLoading = false; @@ -167,10 +167,11 @@ export class ImportActivitiesDialog implements OnDestroy { } public onLoadDividends(aStepper: MatStepper) { - this.uniqueAssetForm.get('uniqueAsset').disable(); + this.assetProfileForm.get('assetProfileIdentifier').disable(); - const { dataSource, symbol } = - this.uniqueAssetForm.get('uniqueAsset').value; + const { dataSource, symbol } = this.assetProfileForm.get( + 'assetProfileIdentifier' + ).value; this.dataService .fetchDividendsImport({ @@ -193,7 +194,7 @@ export class ImportActivitiesDialog implements OnDestroy { this.details = []; this.errorMessages = []; this.importStep = ImportStep.SELECT_ACTIVITIES; - this.uniqueAssetForm.get('uniqueAsset').enable(); + this.assetProfileForm.get('assetProfileIdentifier').enable(); aStepper.reset(); } diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html index 99c3fe99c..3bffe8aee 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -16,56 +16,54 @@ > - Select Holding - Select File + @if (mode === 'DIVIDEND') { + Select Holding + } @else { + Select File + }
    @if (mode === 'DIVIDEND') {
    Holding - + {{ - uniqueAssetForm.get('uniqueAsset')?.value?.name + assetProfileForm.get('assetProfileIdentifier')?.value?.name }} - - {{ holding.name }} -
    - {{ holding.symbol | gfSymbol }} · - {{ holding.currency }} -
    + {{ holding.name }} +
    + {{ holding.symbol | gfSymbol }} · + {{ holding.currency }} + + }
    - + @if (isLoading) { + + }
    @@ -111,36 +109,36 @@ - Select Dividends - Select Activities + @if (mode === 'DIVIDEND') { + Select Dividends + } @else { + Select Activities + }
    @if (errorMessages?.length === 0) { - + @if (importStep === 1) { + + }
    } @else { - - - -
    -
    - + @for (message of errorMessages; track message; let i = $index) { + + + +
    +
    + +
    +
    {{ message }}
    -
    {{ message }}
    -
    - - -
    {{ details[i] | json }}
    - + + + @if (details[i]) { +
    {{ details[i] | json }}
    + } + + }
    diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts index e963a7bd9..5aca4b375 100644 --- a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts +++ b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts @@ -1,7 +1,12 @@ +import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; -import { PortfolioReportRule, User } from '@ghostfolio/common/interfaces'; +import { + PortfolioReport, + PortfolioReportRule, + User +} from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; @@ -23,9 +28,10 @@ export class FirePageComponent implements OnDestroy, OnInit { public feeRules: PortfolioReportRule[]; public fireWealth: Big; public hasImpersonationId: boolean; - public hasPermissionToCreateOrder: boolean; public hasPermissionToUpdateUserSettings: boolean; + public inactiveRules: PortfolioReportRule[]; public isLoading = false; + public isLoadingPortfolioReport = false; public user: User; public withdrawalRatePerMonth: Big; public withdrawalRatePerYear: Big; @@ -50,7 +56,12 @@ export class FirePageComponent implements OnDestroy, OnInit { .subscribe(({ summary }) => { this.fireWealth = summary.fireWealth ? new Big(summary.fireWealth) - : new Big(10000); + : new Big(0); + + if (this.user.subscription?.type === 'Basic') { + this.fireWealth = new Big(10000); + } + this.withdrawalRatePerYear = this.fireWealth.mul(4).div(100); this.withdrawalRatePerMonth = this.withdrawalRatePerYear.div(12); @@ -59,21 +70,6 @@ export class FirePageComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); }); - this.dataService - .fetchPortfolioReport() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe((portfolioReport) => { - this.accountClusterRiskRules = - portfolioReport.rules['accountClusterRisk'] || null; - this.currencyClusterRiskRules = - portfolioReport.rules['currencyClusterRisk'] || null; - this.emergencyFundRules = - portfolioReport.rules['emergencyFund'] || null; - this.feeRules = portfolioReport.rules['fees'] || null; - - this.changeDetectorRef.markForCheck(); - }); - this.impersonationStorageService .onChangeHasImpersonation() .pipe(takeUntil(this.unsubscribeSubject)) @@ -87,11 +83,6 @@ export class FirePageComponent implements OnDestroy, OnInit { if (state?.user) { this.user = state.user; - this.hasPermissionToCreateOrder = hasPermission( - this.user.permissions, - permissions.createOrder - ); - this.hasPermissionToUpdateUserSettings = this.user.subscription?.type === 'Basic' ? false @@ -103,6 +94,8 @@ export class FirePageComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } }); + + this.initializePortfolioReport(); } public onAnnualInterestRateChange(annualInterestRate: number) { @@ -110,10 +103,8 @@ export class FirePageComponent implements OnDestroy, OnInit { .putUserSetting({ annualInterestRate }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -131,10 +122,8 @@ export class FirePageComponent implements OnDestroy, OnInit { }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -144,15 +133,24 @@ export class FirePageComponent implements OnDestroy, OnInit { }); } + public onRulesUpdated(event: UpdateUserSettingDto) { + this.isLoading = true; + + this.dataService + .putUserSetting(event) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.initializePortfolioReport(); + }); + } + public onSavingsRateChange(savingsRate: number) { this.dataService .putUserSetting({ savingsRate }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -170,10 +168,8 @@ export class FirePageComponent implements OnDestroy, OnInit { }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - this.userService.remove(); - this.userService - .get() + .get(true) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((user) => { this.user = user; @@ -187,4 +183,59 @@ export class FirePageComponent implements OnDestroy, OnInit { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); } + + private initializePortfolioReport() { + this.isLoadingPortfolioReport = true; + + this.dataService + .fetchPortfolioReport() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((portfolioReport) => { + this.inactiveRules = this.mergeInactiveRules(portfolioReport); + + this.accountClusterRiskRules = + portfolioReport.rules['accountClusterRisk']?.filter( + ({ isActive }) => { + return isActive; + } + ) ?? null; + + this.currencyClusterRiskRules = + portfolioReport.rules['currencyClusterRisk']?.filter( + ({ isActive }) => { + return isActive; + } + ) ?? null; + + this.emergencyFundRules = + portfolioReport.rules['emergencyFund']?.filter(({ isActive }) => { + return isActive; + }) ?? null; + + this.feeRules = + portfolioReport.rules['fees']?.filter(({ isActive }) => { + return isActive; + }) ?? null; + + this.isLoadingPortfolioReport = false; + + this.changeDetectorRef.markForCheck(); + }); + } + + private mergeInactiveRules(report: PortfolioReport): PortfolioReportRule[] { + let inactiveRules: PortfolioReportRule[] = []; + + for (const category in report.rules) { + const rulesArray = report.rules[category]; + + inactiveRules = inactiveRules.concat( + rulesArray.filter(({ isActive }) => { + return !isActive; + }) + ); + } + + return inactiveRules; + } } diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.html b/apps/client/src/app/pages/portfolio/fire/fire-page.html index 099f2e98c..b0fade836 100644 --- a/apps/client/src/app/pages/portfolio/fire/fire-page.html +++ b/apps/client/src/app/pages/portfolio/fire/fire-page.html @@ -4,11 +4,10 @@

    FIRE

    - Calculator + Calculator + @if (user?.subscription?.type === 'Basic') { + + }

    - 4% Rule + 4% Rule + @if (user?.subscription?.type === 'Basic') { + + }

    -
    - - -
    -
    - If you retire today, you would be able to withdraw - - per year - or - + - per month, based on your total assets of - - - and a withdrawal rate of 4%. -
    +
    + } @else { +
    + If you retire today, you would be able to withdraw + + per year + or + + per month, based on your total assets of + + + and a withdrawal rate of 4%. +
    + }
    @@ -119,56 +119,91 @@

    - Emergency Fund + Emergency Fund + @if (user?.subscription?.type === 'Basic') { + + }

    - Currency Cluster Risks + Currency Cluster Risks + @if (user?.subscription?.type === 'Basic') { + + }

    - Account Cluster Risks + Account Cluster Risks + @if (user?.subscription?.type === 'Basic') { + + }

    -
    +

    - Fees + Fees + @if (user?.subscription?.type === 'Basic') { + + }

    + @if (inactiveRules?.length > 0) { +
    +

    Inactive

    + +
    + }
    diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.html b/apps/client/src/app/pages/portfolio/portfolio-page.html index 360cbd463..a9dbee450 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page.html +++ b/apps/client/src/app/pages/portfolio/portfolio-page.html @@ -8,22 +8,23 @@ [disablePagination]="true" [tabPanel]="tabPanel" > - - - -
    {{ tab.label }}
    -
    -
    + @for (tab of tabs; track tab) { + @if (tab.showCondition !== false) { + + +
    {{ tab.label }}
    +
    + } + } diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.scss b/apps/client/src/app/pages/portfolio/portfolio-page.scss index e87d9a05b..b536ec216 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page.scss +++ b/apps/client/src/app/pages/portfolio/portfolio-page.scss @@ -2,6 +2,6 @@ color: rgb(var(--dark-primary-text)); } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/pricing/pricing-page.component.ts b/apps/client/src/app/pages/pricing/pricing-page.component.ts index 280f7bf74..b366f3d63 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.component.ts +++ b/apps/client/src/app/pages/pricing/pricing-page.component.ts @@ -1,3 +1,4 @@ +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; @@ -41,6 +42,7 @@ export class PricingPageComponent implements OnDestroy, OnInit { public constructor( private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, + private notificationService: NotificationService, private stripeService: StripeService, private userService: UserService ) {} @@ -82,13 +84,18 @@ export class PricingPageComponent implements OnDestroy, OnInit { return this.stripeService.redirectToCheckout({ sessionId }); }), catchError((error) => { - alert(error.message); + this.notificationService.alert({ + title: error.message + }); + throw error; }) ) .subscribe((result) => { if (result.error) { - alert(result.error.message); + this.notificationService.alert({ + title: result.error.message + }); } }); } diff --git a/apps/client/src/app/pages/pricing/pricing-page.html b/apps/client/src/app/pages/pricing/pricing-page.html index e4537ebb1..0c7238253 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.html +++ b/apps/client/src/app/pages/pricing/pricing-page.html @@ -9,18 +9,20 @@ for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development.

    -

    - If you plan to open an account at DEGIRO, finpension, - frankly, Interactive Brokers, Swissquote, - VIAC, or Zak, please - contact us - to use our referral link and get a Ghostfolio Premium membership for - one year. Looking for a student discount? Request it - here with - your university e-mail address. -

    + @if (user?.subscription?.type === 'Basic') { +

    + If you plan to open an account at DEGIRO, finpension, + frankly, Interactive Brokers, Swissquote, + VIAC, or Zak, please + contact us + to use our referral link and get a Ghostfolio Premium membership for + one year. Looking for a student discount? Request it + here + with your university e-mail address. +

    + }

    If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on @@ -91,15 +93,14 @@

    Self-hosted, update manually.

    Free

    - + @if (user?.subscription?.type === 'Basic') { + + }
    @@ -113,9 +114,11 @@

    Basic

    -
    - -
    + @if (user?.subscription?.type === 'Basic') { +
    + +
    + }

    For new investors who are just getting started with trading. @@ -148,15 +151,14 @@

    Fully managed Ghostfolio cloud offering.

    Free

    - + @if (user?.subscription?.type === 'Basic') { + + }
    @@ -173,9 +175,11 @@ Premium -
    - -
    + @if (user?.subscription?.type === 'Premium') { +
    + +
    + }

    For ambitious investors who need the full picture of their @@ -240,58 +244,62 @@

    Fully managed Ghostfolio cloud offering.

    - {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ price - coupon }} - - {{ baseCurrency }} {{ - price - }} per year{{ price }} + } +   + per year

    -
    - -

    - One-time payment, no auto-renewal. -

    -
    + ) { + Renew Plan + } + +

    + One-time payment, no auto-renewal. +

    +
    + }
    -
    -
    - - Get Started - -

    It’s free.

    + @if (!user) { +
    +
    + + Get Started + +

    It’s free.

    +
    -
    + }
    diff --git a/apps/client/src/app/pages/pricing/pricing-page.scss b/apps/client/src/app/pages/pricing/pricing-page.scss index 86f4b526f..ad8e97b19 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.scss +++ b/apps/client/src/app/pages/pricing/pricing-page.scss @@ -26,6 +26,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/public/public-page.html b/apps/client/src/app/pages/public/public-page.html index bac3189be..04d8aca1e 100644 --- a/apps/client/src/app/pages/public/public-page.html +++ b/apps/client/src/app/pages/public/public-page.html @@ -24,110 +24,121 @@
    -
    - - - Currencies - - - - - -
    -
    - - - Sectors - - - - - -
    -
    - - - Continents - - - - - -
    -
    -
    -
    - - - Regions - - -
    - + + + Currencies + + + -
    -
    -
    - Developed Markets -
    -
    - Emerging Markets -
    -
    - Other Markets -
    -
    + +
    + } + @if (portfolioPublicDetails?.hasDetails) { +
    + + + Sectors + + + + + +
    + } + @if (portfolioPublicDetails?.hasDetails) { +
    + + + Continents - No data available + + + + + +
    + } +
    + @if (portfolioPublicDetails?.hasDetails) { +
    +
    + + + Regions + + +
    +
    -
    - - +
    +
    + Developed Markets +
    +
    + Emerging Markets +
    +
    + Other Markets +
    + @if (markets?.[UNKNOWN_KEY]?.value > 0) { +
    + No data available +
    + } +
    + + +
    -
    + }
    -

    +

    Would you like to refine your personal investment strategy?

    diff --git a/apps/client/src/app/pages/public/public-page.scss b/apps/client/src/app/pages/public/public-page.scss index 9a6909a98..dbea95e24 100644 --- a/apps/client/src/app/pages/public/public-page.scss +++ b/apps/client/src/app/pages/public/public-page.scss @@ -17,6 +17,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/register/register-page.html b/apps/client/src/app/pages/register/register-page.html index 27aa5527e..903aedccf 100644 --- a/apps/client/src/app/pages/register/register-page.html +++ b/apps/client/src/app/pages/register/register-page.html @@ -14,44 +14,47 @@
    -
    -
    -
    - - -
    or
    + @if (hasPermissionToCreateUser) { +
    +
    +
    - Continue with Google - + @if (hasPermissionForSocialLogin) { +
    or
    + @if (false) { + + } + Continue with Google + } +
    -
    + }
    diff --git a/apps/client/src/app/pages/register/register-page.scss b/apps/client/src/app/pages/register/register-page.scss index 2334b58d4..322a2064f 100644 --- a/apps/client/src/app/pages/register/register-page.scss +++ b/apps/client/src/app/pages/register/register-page.scss @@ -24,7 +24,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .button-container { .mat-mdc-outlined-button { background-color: var(--dark-background); diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html index 8b2dca836..0a6a2e5e3 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1,8 +1,8 @@

    - Create Account{{ - data.role - }} + Create Account + @if (data.role === 'ADMIN') { + {{ data.role }} + }

    diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts index 548ffc1fa..01d920460 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts @@ -1,10 +1,10 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { PersonalFinanceToolsPageComponent } from './personal-finance-tools-page.component'; -import { products } from './products'; const routes: Routes = [ { @@ -13,19 +13,20 @@ const routes: Routes = [ path: '', title: $localize`Personal Finance Tools` }, - ...products - .filter(({ key }) => { - return key !== 'ghostfolio'; - }) - .map(({ alias, component, key, name }) => { - return { - canActivate: [AuthGuard], - path: $localize`open-source-alternative-to` + `-${alias ?? key}`, - loadComponent: () => - import(`./products/${key}-page.component`).then(() => component), - title: $localize`Open Source Alternative to ${name}` - }; - }) + ...personalFinanceTools.map(({ alias, key, name }) => { + return { + canActivate: [AuthGuard], + data: { key }, + loadComponent: () => + import('./product-page.component').then( + ({ GfProductPageComponent }) => { + return GfProductPageComponent; + } + ), + path: $localize`open-source-alternative-to` + `-${alias ?? key}`, + title: $localize`Open Source Alternative to ${name}` + }; + }) ]; @NgModule({ diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts index 173b5426f..596ac310e 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts @@ -1,8 +1,8 @@ +import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; + import { Component, OnDestroy } from '@angular/core'; import { Subject } from 'rxjs'; -import { products } from './products'; - @Component({ host: { class: 'page' }, selector: 'gf-personal-finance-tools-page', @@ -12,13 +12,9 @@ import { products } from './products'; export class PersonalFinanceToolsPageComponent implements OnDestroy { public pathAlternativeTo = $localize`open-source-alternative-to` + '-'; public pathResources = '/' + $localize`resources`; - public products = products - .filter(({ key }) => { - return key !== 'ghostfolio'; - }) - .sort((a, b) => { - return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }); - }); + public personalFinanceTools = personalFinanceTools.sort((a, b) => { + return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }); + }); public routerLinkAbout = ['/' + $localize`about`]; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html index ec224ae6c..f3c128433 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html @@ -18,25 +18,29 @@ with Ghostfolio.

    - @for (product of products; track product) { + @for ( + personalFinanceTool of personalFinanceTools; + track personalFinanceTool + ) { - +
    - Open Source Alternative to {{ product.name }} + Open Source Alternative to {{ personalFinanceTool.name }}
    diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.scss b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.scss index 8e1e178c7..90a5a41dc 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.scss +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.scss @@ -12,8 +12,14 @@ } } } + + .mat-mdc-card { + &:hover { + border-color: var(--gf-theme-primary-500); + } + } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts new file mode 100644 index 000000000..76fe7eb97 --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -0,0 +1,106 @@ +import { DataService } from '@ghostfolio/client/services/data.service'; +import { Product } from '@ghostfolio/common/interfaces'; +import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; +import { translate } from '@ghostfolio/ui/i18n'; + +import { CommonModule } from '@angular/common'; +import { Component, OnInit } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { ActivatedRoute, RouterModule } from '@angular/router'; + +@Component({ + host: { class: 'page' }, + imports: [CommonModule, MatButtonModule, RouterModule], + selector: 'gf-product-page', + standalone: true, + styleUrls: ['./product-page.scss'], + templateUrl: './product-page.html' +}) +export class GfProductPageComponent implements OnInit { + public key: string; + public price: number; + public product1: Product; + public product2: Product; + public routerLinkAbout = ['/' + $localize`about`]; + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkResourcesPersonalFinanceTools = [ + '/' + $localize`resources`, + 'personal-finance-tools' + ]; + public tags: string[]; + + public constructor( + private dataService: DataService, + private route: ActivatedRoute + ) {} + + public ngOnInit() { + const { subscriptions } = this.dataService.fetchInfo(); + + this.price = subscriptions?.default?.price; + + this.product1 = { + founded: 2021, + hasFreePlan: true, + hasSelfHostingAbility: true, + isOpenSource: true, + key: 'ghostfolio', + languages: [ + 'Deutsch', + 'English', + 'Español', + 'Français', + 'Italiano', + 'Nederlands', + 'Português', + 'Türkçe', + '简体中文' + ], + name: 'Ghostfolio', + origin: $localize`Switzerland`, + regions: [$localize`Global`], + slogan: 'Open Source Wealth Management', + useAnonymously: true + }; + + this.product2 = personalFinanceTools.find(({ key }) => { + return key === this.route.snapshot.data['key']; + }); + + if (this.product2.origin) { + this.product2.origin = translate(this.product2.origin); + } + + if (this.product2.regions) { + this.product2.regions = this.product2.regions.map((region) => { + return translate(region); + }); + } + + this.tags = [ + this.product1.name, + this.product2.name, + $localize`Alternative`, + $localize`App`, + $localize`Budgeting`, + $localize`Community`, + $localize`Family Office`, + `Fintech`, + $localize`Investment`, + $localize`Investor`, + $localize`Open Source`, + `OSS`, + $localize`Personal Finance`, + $localize`Privacy`, + $localize`Portfolio`, + $localize`Software`, + $localize`Tool`, + $localize`User Experience`, + $localize`Wealth`, + $localize`Wealth Management`, + `WealthTech` + ].sort((a, b) => { + return a.localeCompare(b, undefined, { sensitivity: 'base' }); + }); + } +} diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html similarity index 57% rename from apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html rename to apps/client/src/app/pages/resources/personal-finance-tools/product-page.html index e6fb04d8d..1c7102ed9 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -80,24 +80,46 @@
  • Region{{ product1.region }}{{ product2.region }} + @for ( + region of product1.regions; + track region; + let isLast = $last + ) { + {{ region }}{{ isLast ? '' : ', ' }} + } + + @for ( + region of product2.regions; + track region; + let isLast = $last + ) { + {{ region }}{{ isLast ? '' : ', ' }} + } +
    Available in - {{ language }}{{ isLast ? '' : ', ' }} + @for ( + language of product1.languages; + track language; + let isLast = $last + ) { + {{ language }}{{ isLast ? '' : ', ' }} + } - {{ language }}{{ isLast ? '' : ', ' }} + @for ( + language of product2.languages; + track language; + let isLast = $last + ) { + {{ language }}{{ isLast ? '' : ', ' }} + }
    - ✅ Yes❌ No + @if (product1.isOpenSource) { + ✅ Yes + } @else { + ❌ No + } - ✅ Yes❌ No - + @if (product2.isOpenSource) { + ✅ Yes + } @else { + ❌ No + }
    - ✅ Yes❌ No + @if (product1.hasSelfHostingAbility === true) { + ✅ Yes + } @else if (product1.hasSelfHostingAbility === false) { + ❌ No + } - ✅ Yes❌ No + @if (product2.hasSelfHostingAbility === true) { + ✅ Yes + } @else if (product2.hasSelfHostingAbility === false) { + ❌ No + }
    - ✅ Yes❌ No + @if (product1.useAnonymously === true) { + ✅ Yes + } @else if (product1.useAnonymously === false) { + ❌ No + } - ✅ Yes❌ No + @if (product2.useAnonymously === true) { + ✅ Yes + } @else if (product2.useAnonymously === false) { + ❌ No + }
    - ✅ Yes❌ No + @if (product1.hasFreePlan === true) { + ✅ Yes + } @else if (product1.hasFreePlan === false) { + ❌ No + } - ✅ Yes❌ No + @if (product2.hasFreePlan === true) { + ✅ Yes + } @else if (product2.hasFreePlan === false) { + ❌ No + }
    - Starting from + @if (product2.pricingPerYear) { + Starting from {{ product2.pricingPerYear }} / - year + year + }
    Notes{{ product1.note }}{{ product2.note }}
    Notes{{ product1.note }}{{ product2.note }}
    @@ -236,69 +252,11 @@
      -
    • - Alternative -
    • -
    • - App -
    • -
    • - Budgeting -
    • -
    • - Community -
    • -
    • - Family Office -
    • -
    • - Fintech -
    • -
    • - {{ product1.name }} -
    • -
    • - Investment -
    • -
    • - Investor -
    • -
    • - Open Source -
    • -
    • - OSS -
    • -
    • - Personal Finance -
    • -
    • - Privacy -
    • -
    • - Portfolio -
    • -
    • - Software -
    • -
    • - Tool -
    • -
    • - User Experience -
    • -
    • - Wealth -
    • -
    • - WealthTech -
    • -
    • - Wealth Management -
    • -
    • - {{ product2.name }} -
    • + @for (tag of tags; track tag) { +
    • + {{ tag }} +
    • + }

    Markets

    +
    +
    +

    Crypto Coins Heatmap

    +
    + With the Crypto Coins Heatmap you can track the daily + market movements of cryptocurrencies as a visual snapshot. +
    + +
    +

    Fear & Greed Index

    @@ -73,10 +89,10 @@
    -
    +

    Inflation Chart

    - Inflation Chart helps you find the intrinsic value of stock + Inflation Chart helps you find the intrinsic value of stock markets, stock prices, goods and services by adjusting them to the amount of the money supply (M0, M1, M2) or price of other goods (food or oil). @@ -88,6 +104,22 @@
    +
    +
    +

    Stock Heatmap

    +
    + With the Stock Heatmap you can track the daily market + movements of stocks as a visual snapshot. +
    + +
    +

    Glossary

    diff --git a/apps/client/src/app/pages/resources/resources-page.scss b/apps/client/src/app/pages/resources/resources-page.scss index 4a8680714..c3109fdf7 100644 --- a/apps/client/src/app/pages/resources/resources-page.scss +++ b/apps/client/src/app/pages/resources/resources-page.scss @@ -12,6 +12,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/user-account/user-account-page.html b/apps/client/src/app/pages/user-account/user-account-page.html index 360cbd463..a9dbee450 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.html +++ b/apps/client/src/app/pages/user-account/user-account-page.html @@ -8,22 +8,23 @@ [disablePagination]="true" [tabPanel]="tabPanel" > - - - -
    {{ tab.label }}
    -
    -
    + @for (tab of tabs; track tab) { + @if (tab.showCondition !== false) { + + +
    {{ tab.label }}
    +
    + } + } diff --git a/apps/client/src/app/pages/user-account/user-account-page.scss b/apps/client/src/app/pages/user-account/user-account-page.scss index e87d9a05b..b536ec216 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.scss +++ b/apps/client/src/app/pages/user-account/user-account-page.scss @@ -2,6 +2,6 @@ color: rgb(var(--dark-primary-text)); } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/pages/webauthn/webauthn-page.component.ts b/apps/client/src/app/pages/webauthn/webauthn-page.component.ts index 5e5ce5d19..41860014a 100644 --- a/apps/client/src/app/pages/webauthn/webauthn-page.component.ts +++ b/apps/client/src/app/pages/webauthn/webauthn-page.component.ts @@ -2,7 +2,6 @@ import { TokenStorageService } from '@ghostfolio/client/services/token-storage.s import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service'; import { GfLogoComponent } from '@ghostfolio/ui/logo'; -import { CommonModule } from '@angular/common'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; @@ -12,12 +11,7 @@ import { takeUntil } from 'rxjs/operators'; @Component({ host: { class: 'page' }, - imports: [ - CommonModule, - GfLogoComponent, - MatButtonModule, - MatProgressSpinnerModule - ], + imports: [GfLogoComponent, MatButtonModule, MatProgressSpinnerModule], selector: 'gf-webauthn-page', standalone: true, styleUrls: ['./webauthn-page.scss'], diff --git a/apps/client/src/app/pages/zen/zen-page.html b/apps/client/src/app/pages/zen/zen-page.html index 360cbd463..a9dbee450 100644 --- a/apps/client/src/app/pages/zen/zen-page.html +++ b/apps/client/src/app/pages/zen/zen-page.html @@ -8,22 +8,23 @@ [disablePagination]="true" [tabPanel]="tabPanel" > - - - -
    {{ tab.label }}
    -
    -
    + @for (tab of tabs; track tab) { + @if (tab.showCondition !== false) { + + +
    {{ tab.label }}
    +
    + } + } diff --git a/apps/client/src/app/pages/zen/zen-page.scss b/apps/client/src/app/pages/zen/zen-page.scss index e87d9a05b..b536ec216 100644 --- a/apps/client/src/app/pages/zen/zen-page.scss +++ b/apps/client/src/app/pages/zen/zen-page.scss @@ -2,6 +2,6 @@ color: rgb(var(--dark-primary-text)); } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { color: rgb(var(--light-primary-text)); } diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index 0256a1e51..697f0b2fa 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -7,13 +7,13 @@ import { UpdateTagDto } from '@ghostfolio/api/app/tag/update-tag.dto'; import { IDataProviderHistoricalResponse } from '@ghostfolio/api/services/interfaces/interfaces'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { + AssetProfileIdentifier, AdminData, AdminJobs, AdminMarketData, AdminMarketDataDetails, EnhancedSymbolProfile, - Filter, - UniqueAsset + Filter } from '@ghostfolio/common/interfaces'; import { HttpClient, HttpParams } from '@angular/common/http'; @@ -35,7 +35,7 @@ export class AdminService { private http: HttpClient ) {} - public addAssetProfile({ dataSource, symbol }: UniqueAsset) { + public addAssetProfile({ dataSource, symbol }: AssetProfileIdentifier) { return this.http.post( `/api/v1/admin/profile-data/${dataSource}/${symbol}`, null @@ -62,7 +62,7 @@ export class AdminService { return this.http.delete(`/api/v1/platform/${aId}`); } - public deleteProfileData({ dataSource, symbol }: UniqueAsset) { + public deleteProfileData({ dataSource, symbol }: AssetProfileIdentifier) { return this.http.delete( `/api/v1/admin/profile-data/${dataSource}/${symbol}` ); @@ -167,7 +167,10 @@ export class AdminService { return this.http.post('/api/v1/admin/gather/profile-data', {}); } - public gatherProfileDataBySymbol({ dataSource, symbol }: UniqueAsset) { + public gatherProfileDataBySymbol({ + dataSource, + symbol + }: AssetProfileIdentifier) { return this.http.post( `/api/v1/admin/gather/profile-data/${dataSource}/${symbol}`, {} @@ -178,7 +181,7 @@ export class AdminService { dataSource, date, symbol - }: UniqueAsset & { + }: AssetProfileIdentifier & { date?: Date; }) { let url = `/api/v1/admin/gather/${dataSource}/${symbol}`; @@ -218,7 +221,7 @@ export class AdminService { symbolMapping, tags, url - }: UniqueAsset & UpdateAssetProfileDto) { + }: AssetProfileIdentifier & UpdateAssetProfileDto) { return this.http.patch( `/api/v1/admin/profile-data/${dataSource}/${symbol}`, { @@ -274,7 +277,7 @@ export class AdminService { dataSource, scraperConfiguration, symbol - }: UniqueAsset & UpdateAssetProfileDto['scraperConfiguration']) { + }: AssetProfileIdentifier & UpdateAssetProfileDto['scraperConfiguration']) { return this.http.post( `/api/v1/admin/market-data/${dataSource}/${symbol}/test`, { diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 7993b3ac1..7cf65cfd1 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -4,7 +4,10 @@ import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto import { TransferBalanceDto } from '@ghostfolio/api/app/account/transfer-balance.dto'; import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; -import { Activities } from '@ghostfolio/api/app/order/interfaces/activities.interface'; +import { + Activities, + Activity +} from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { UpdateOrderDto } from '@ghostfolio/api/app/order/update-order.dto'; import { PortfolioHoldingDetail } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-holding-detail.interface'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; @@ -19,6 +22,8 @@ import { Access, AccountBalancesResponse, Accounts, + AdminMarketDataDetails, + AssetProfileIdentifier, BenchmarkMarketDataDetails, BenchmarkResponse, Export, @@ -33,7 +38,6 @@ import { PortfolioPerformanceResponse, PortfolioPublicDetails, PortfolioReport, - UniqueAsset, User } from '@ghostfolio/common/interfaces'; import { filterGlobalPermissions } from '@ghostfolio/common/permissions'; @@ -46,7 +50,8 @@ import { SortDirection } from '@angular/material/sort'; import { AccountBalance, DataSource, - Order as OrderModel + Order as OrderModel, + Tag } from '@prisma/client'; import { format, parseISO } from 'date-fns'; import { cloneDeep, groupBy, isNumber } from 'lodash'; @@ -210,6 +215,17 @@ export class DataService { ); } + public fetchActivity(aActivityId: string) { + return this.http.get(`/api/v1/order/${aActivityId}`).pipe( + map((activity) => { + activity.createdAt = parseISO((activity.createdAt)); + activity.date = parseISO((activity.date)); + + return activity; + }) + ); + } + public fetchDividends({ filters, groupBy = 'month', @@ -228,7 +244,7 @@ export class DataService { }); } - public fetchDividendsImport({ dataSource, symbol }: UniqueAsset) { + public fetchDividendsImport({ dataSource, symbol }: AssetProfileIdentifier) { return this.http.get( `/api/v1/import/dividends/${dataSource}/${symbol}` ); @@ -268,7 +284,7 @@ export class DataService { return this.http.delete(`/api/v1/order/${aId}`); } - public deleteBenchmark({ dataSource, symbol }: UniqueAsset) { + public deleteBenchmark({ dataSource, symbol }: AssetProfileIdentifier) { return this.http.delete(`/api/v1/benchmark/${dataSource}/${symbol}`); } @@ -284,7 +300,21 @@ export class DataService { return this.http.get('/api/v1/access'); } - public fetchBenchmarkBySymbol({ + public fetchAsset({ + dataSource, + symbol + }: AssetProfileIdentifier): Observable { + return this.http.get(`/api/v1/asset/${dataSource}/${symbol}`).pipe( + map((data) => { + for (const item of data.marketData) { + item.date = parseISO(item.date); + } + return data; + }) + ); + } + + public fetchBenchmarkForUser({ dataSource, range, startDate, @@ -292,7 +322,7 @@ export class DataService { }: { range: DateRange; startDate: Date; - } & UniqueAsset): Observable { + } & AssetProfileIdentifier): Observable { let params = new HttpParams(); if (range) { @@ -625,7 +655,7 @@ export class DataService { ); } - public postBenchmark(benchmark: UniqueAsset) { + public postBenchmark(benchmark: AssetProfileIdentifier) { return this.http.post(`/api/v1/benchmark`, benchmark); } @@ -645,6 +675,17 @@ export class DataService { return this.http.put(`/api/v1/admin/settings/${key}`, aData); } + public putHoldingTags({ + dataSource, + symbol, + tags + }: { tags: Tag[] } & AssetProfileIdentifier) { + return this.http.put( + `/api/v1/portfolio/position/${dataSource}/${symbol}/tags`, + { tags } + ); + } + public putOrder(aOrder: UpdateOrderDto) { return this.http.put(`/api/v1/order/${aOrder.id}`, aOrder); } diff --git a/apps/client/src/assets/images/logo-selfh-st.svg b/apps/client/src/assets/images/logo-selfh-st.svg new file mode 100644 index 000000000..4334dd8e8 --- /dev/null +++ b/apps/client/src/assets/images/logo-selfh-st.svg @@ -0,0 +1 @@ + diff --git a/apps/client/src/assets/site.webmanifest b/apps/client/src/assets/site.webmanifest index 3dc452fe9..8f1eceefb 100644 --- a/apps/client/src/assets/site.webmanifest +++ b/apps/client/src/assets/site.webmanifest @@ -7,10 +7,16 @@ { "sizes": "192x192", "src": "/assets/android-chrome-192x192.png", - "type": "image/png", - "purpose": "any maskable" + "type": "image/png" + }, + { + "purpose": "any", + "sizes": "512x512", + "src": "/assets/android-chrome-512x512.png", + "type": "image/png" }, { + "purpose": "maskable", "sizes": "512x512", "src": "/assets/android-chrome-512x512.png", "type": "image/png" @@ -21,5 +27,5 @@ "short_name": "Ghostfolio", "start_url": "/en/", "theme_color": "#FFFFFF", - "url": "https://www.ghostfol.io" + "url": "https://ghostfol.io" } diff --git a/apps/client/src/index.html b/apps/client/src/index.html index 7447a2c78..47f2c3d1a 100644 --- a/apps/client/src/index.html +++ b/apps/client/src/index.html @@ -48,7 +48,7 @@ - + diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf new file mode 100644 index 000000000..89083200c --- /dev/null +++ b/apps/client/src/locales/messages.ca.xlf @@ -0,0 +1,7022 @@ + + + + + Features + Característiques + + apps/client/src/app/app-routing.module.ts + 65 + + + + Internationalization + Internacionalització + + apps/client/src/app/app-routing.module.ts + 79 + + + + Sign in + Iniciar sessió + + apps/client/src/app/app-routing.module.ts + 141 + + + apps/client/src/app/components/header/header.component.ts + 231 + + + + You are using the Live Demo. + Esteu utilitzant una demo. + + apps/client/src/app/app.component.html + 12 + + + + Create Account + Crea un Compte + + apps/client/src/app/app.component.html + 13 + + + apps/client/src/app/pages/register/register-page.html + 27 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 + + + + Personal Finance + Finances Personals + + apps/client/src/app/app.component.html + 54 + + + + Markets + Mercats + + apps/client/src/app/app.component.html + 58 + + + apps/client/src/app/components/header/header.component.html + 380 + + + apps/client/src/app/components/home-market/home-market.html + 2 + + + apps/client/src/app/pages/resources/resources-page.html + 56 + + + + Resources + Recursos + + apps/client/src/app/app.component.html + 61 + + + apps/client/src/app/components/header/header.component.html + 82 + + + apps/client/src/app/components/header/header.component.html + 283 + + + apps/client/src/app/pages/resources/resources-page.html + 4 + + + + About + Sobre + + apps/client/src/app/app.component.html + 67 + + + apps/client/src/app/components/header/header.component.html + 112 + + + apps/client/src/app/components/header/header.component.html + 351 + + + + Blog + Blog + + apps/client/src/app/app.component.html + 70 + + + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 + + + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 + + + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 + + + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 + + + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 + + + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 + + + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 + + + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 + + + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 + + + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 + + + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 + + + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 + + + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 + + + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 + + + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 + + + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 181 + + + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 + + + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 + + + apps/client/src/app/pages/blog/blog-page.html + 5 + + + + Changelog + Registre de canvis + + apps/client/src/app/app.component.html + 74 + + + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + + Features + Característiques + + apps/client/src/app/app.component.html + 76 + + + apps/client/src/app/components/header/header.component.html + 338 + + + apps/client/src/app/pages/features/features-page.html + 5 + + + + Frequently Asked Questions (FAQ) + Preguntes Freqüents (FAQ) + + apps/client/src/app/app.component.html + 80 + + + apps/client/src/app/pages/about/overview/about-overview-page.html + 146 + + + + License + Llicències + + apps/client/src/app/app.component.html + 85 + + + apps/client/src/app/pages/about/license/license-page.html + 4 + + + + Pricing + Preu + + apps/client/src/app/app.component.html + 94 + + + apps/client/src/app/components/header/header.component.html + 98 + + + apps/client/src/app/components/header/header.component.html + 294 + + + apps/client/src/app/components/header/header.component.html + 365 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + + Privacy Policy + Política de privacitat + + apps/client/src/app/app.component.html + 100 + + + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 + + + + Community + Comunitat + + apps/client/src/app/app.component.html + 118 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 83 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 88 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 96 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 100 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 105 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 + + + apps/client/src/app/pages/features/features-page.html + 259 + + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + El risc d’assumir pèrdues en les inversions és substancial. No és recomanable invertir diners que pugui necessitar a curt termini. + + apps/client/src/app/app.component.html + 199 + + + + about + sobre + + apps/client/src/app/app.component.ts + 60 + + + apps/client/src/app/app.component.ts + 61 + + + apps/client/src/app/app.component.ts + 62 + + + apps/client/src/app/app.component.ts + 64 + + + apps/client/src/app/components/header/header.component.ts + 78 + + + apps/client/src/app/components/header/header.component.ts + 83 + + + apps/client/src/app/core/paths.ts + 2 + + + apps/client/src/app/pages/about/about-page.component.ts + 45 + + + apps/client/src/app/pages/about/about-page.component.ts + 50 + + + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + apps/client/src/app/pages/about/about-page.component.ts + 74 + + + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 14 + + + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 13 + + + apps/client/src/app/pages/landing/landing-page.component.ts + 26 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 18 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + + license + llicències + + apps/client/src/app/app.component.ts + 62 + + + apps/client/src/app/core/paths.ts + 5 + + + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + + privacy-policy + política de privacitat + + apps/client/src/app/app.component.ts + 65 + + + apps/client/src/app/core/paths.ts + 8 + + + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + + faq + faq + + apps/client/src/app/app.component.ts + 67 + + + apps/client/src/app/core/paths.ts + 3 + + + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 + + + apps/client/src/app/pages/faq/faq-page.component.ts + 37 + + + apps/client/src/app/pages/faq/faq-page.component.ts + 42 + + + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + apps/client/src/app/pages/resources/resources-page.component.ts + 17 + + + + features + característiques + + apps/client/src/app/app.component.ts + 68 + + + apps/client/src/app/components/header/header.component.ts + 79 + + + apps/client/src/app/components/header/header.component.ts + 84 + + + apps/client/src/app/core/paths.ts + 4 + + + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 + + + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 + + + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 + + + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 + + + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 + + + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 + + + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + + markets + mercats + + apps/client/src/app/app.component.ts + 69 + + + apps/client/src/app/components/header/header.component.ts + 80 + + + apps/client/src/app/components/header/header.component.ts + 85 + + + apps/client/src/app/core/paths.ts + 6 + + + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 + + + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + + pricing + preu + + apps/client/src/app/app.component.ts + 70 + + + apps/client/src/app/components/header/header.component.ts + 81 + + + apps/client/src/app/components/header/header.component.ts + 86 + + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 + + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 + + + apps/client/src/app/core/http-response.interceptor.ts + 72 + + + apps/client/src/app/core/paths.ts + 7 + + + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 + + + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 + + + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 + + + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 + + + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 + + + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + + register + registrar-se + + apps/client/src/app/app.component.ts + 71 + + + apps/client/src/app/components/header/header.component.ts + 87 + + + apps/client/src/app/core/auth.guard.ts + 55 + + + apps/client/src/app/core/paths.ts + 9 + + + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 + + + apps/client/src/app/pages/features/features-page.component.ts + 29 + + + apps/client/src/app/pages/landing/landing-page.component.ts + 27 + + + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 + + + + resources + recursos + + apps/client/src/app/app.component.ts + 72 + + + apps/client/src/app/components/header/header.component.ts + 82 + + + apps/client/src/app/components/header/header.component.ts + 88 + + + apps/client/src/app/core/paths.ts + 10 + + + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 + + + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 + + + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts + 13 + + + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 14 + + + apps/client/src/app/pages/features/features-page.component.ts + 30 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 + + + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + + Alias + Àlies + + apps/client/src/app/components/access-table/access-table.component.html + 4 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 + + + + Grantee + Grantee + + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + + Permission + Permisos + + apps/client/src/app/components/access-table/access-table.component.html + 18 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + + View + Vista + + apps/client/src/app/components/access-table/access-table.component.html + 23 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + + Restricted view + Vista restringida + + apps/client/src/app/components/access-table/access-table.component.html + 26 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + + Details + Detalls + + apps/client/src/app/components/access-table/access-table.component.html + 33 + + + + Revoke + Revocar + + apps/client/src/app/components/access-table/access-table.component.html + 62 + + + + Do you really want to revoke this granted access? + Realment vol revocar aquest accés? + + apps/client/src/app/components/access-table/access-table.component.ts + 56 + + + + Cash Balance + Balanç de Caixa + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 45 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + + Equity + Patrimoni + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 56 + + + + Activities + Activitats + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 61 + + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 90 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 152 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 44 + + + apps/client/src/app/components/admin-users/admin-users.html + 135 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 225 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 + + + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + + Platform + Plataforma + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 65 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + + Holdings + En cartera + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 77 + + + apps/client/src/app/components/home-holdings/home-holdings.html + 4 + + + apps/client/src/app/pages/public/public-page.html + 14 + + + libs/ui/src/lib/assistant/assistant.html + 46 + + + + Cash Balances + Balanç de Caixa + + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + + Transfer Cash Balance + Transferir Efectiu + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Name + Nom + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 60 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 228 + + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 30 + + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 30 + + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 138 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 137 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + + + + Total + Total + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + + Currency + Divisa + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 132 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 235 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 144 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 275 + + + + Value + Valor + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 + + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 204 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 207 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 210 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 274 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 277 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 280 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 283 + + + libs/ui/src/lib/account-balances/account-balances.component.html + 34 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 256 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 292 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + + + + Edit + Editar + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 215 + + + apps/client/src/app/components/admin-overview/admin-overview.html + 78 + + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 92 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 71 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 429 + + + + Delete + Suprimir + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 288 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 236 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 + + + apps/client/src/app/components/admin-overview/admin-overview.html + 88 + + + apps/client/src/app/components/admin-overview/admin-overview.html + 205 + + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 102 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 81 + + + libs/ui/src/lib/account-balances/account-balances.component.html + 80 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 455 + + + + Do you really want to delete this account? + Realment vol suprimir aquest compte? + + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 110 + + + + Type + Tipus + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 160 + + + + Asset Profile + Perfil d’Actiu + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + + Historical Market Data + Dades Històriques de Mercat + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 + + + + Symbol + Símbol + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 44 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 46 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 36 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 305 + + + + Data Source + Origen de les Dades + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 53 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 77 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 127 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 154 + + + + Priority + Prioritat + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 + + + + Attempts + Intents + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 81 + + + + Created + Creat + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 90 + + + + Finished + Finalitzat + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 99 + + + + Status + Estat + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 108 + + + + Delete Jobs + Aturar Processos + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 149 + + + + View Data + Veure les Dades + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 164 + + + + View Stacktrace + View Stacktrace + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 171 + + + + Execute Job + Executar Procés + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 + + + + Delete Job + Suprimir Procés + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 177 + + + + Details for + Detalls de + + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 2 + + + + Date + Data + + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 6 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 160 + + + libs/ui/src/lib/account-balances/account-balances.component.html + 12 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 169 + + + + Market Price + Preu de Mercat + + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 26 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 114 + + + + Cancel + Cancel·lar + + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 46 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 378 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 43 + + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 42 + + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 65 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 427 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + + Save + Guardar + + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 48 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 385 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 50 + + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 49 + + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 434 + + + + Benchmarks + Punts de referència + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 + + + + Currencies + Divises + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 + + + + ETFs without Countries + ETFs sense País + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + + ETFs without Sectors + ETFs sense Sector + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 + + + + Filter by... + Filtra per... + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 328 + + + + Asset Class + Classe d’Actiu + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 86 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 245 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 232 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 354 + + + + Asset Sub Class + Subclasse d’Actiu + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 95 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 170 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 258 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 241 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 370 + + + + First Activity + Primera Activitat + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 104 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 143 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 213 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 + + + + Activities Count + Nombre d’Activitats + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 113 + + + + Historical Data + Dades Històriques + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 122 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 84 + + + + Sectors Count + Nombre de Sectors + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 131 + + + + Countries Count + Nombre de Països + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 140 + + + + Gather Recent Data + Recopilar Dades Recents + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 177 + + + + Gather All Data + Recopilar Totes les Dades + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 180 + + + + Gather Profile Data + Recopilar Dades del Perfil + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 183 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 45 + + + + Delete Profiles + Eliminar Perfils + + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 + + + + Do you really want to delete this asset profile? + Realment vol eliminar el perfil d’aquest actiu? + + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + + Do you really want to delete these profiles? + Realment vol eliminar aquests perfils? + + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 + + + + Oops! Could not delete profiles. + Oooh! No s’han pogut eliminar els perfils + + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 + + + + Oops! Could not parse historical data. + Oooh! No s’han pogut recopilar les dades históriques. + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + + The current market price is + El preu de mercat actual és + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + + Refresh + Refrescar + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + + Gather Historical Data + Recopilar Dades Històriques + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 32 + + + + Import + Importar + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 110 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 + + + + Sector + Sector + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 187 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 258 + + + + Country + País + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 198 + + + apps/client/src/app/components/admin-users/admin-users.html + 77 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 268 + + + + Sectors + Sectors + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 204 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 329 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 274 + + + apps/client/src/app/pages/public/public-page.html + 50 + + + + Countries + Països + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 340 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 286 + + + + Benchmark + Referència + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + + Symbol Mapping + Mapatge de Símbols + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 292 + + + + Scraper Configuration + Configuració del Proveïdor de Dades + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 + + + + Test + Prova + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + + Url + Url + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 + + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 51 + + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 + + + + Note + Notes + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 365 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 339 + + + + Add Asset Profile + Afegeix el Perfil de l’Actiu + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 + + + + Search + Cerca + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Afegir manualment + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Name, symbol or ISIN + Nom, símbol o ISIN + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 26 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + + Please add a currency: + Si us plau, afegiu una divisa: + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 125 + + + + is an invalid currency! + no és una divisa vàlida! + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + + Do you really want to delete this coupon? + Està segur qeu vol eliminar aquest cupó? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 152 + + + + Do you really want to delete this currency? + Està segur que vol eliminar aquesta divisa? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 165 + + + + Do you really want to delete this system message? + Està segur que vol eliminar aquest missatge del sistema? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + + Do you really want to flush the cache? + Està segur que vol depurar el cache? + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 202 + + + + Please set your system message: + Si us plau, afegeixi el seu missatge del sistema: + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 222 + + + + Version + Versió + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + User Count + Número d’Usuaris + + apps/client/src/app/components/admin-overview/admin-overview.html + 13 + + + + Activity Count + Número d’Activitats + + apps/client/src/app/components/admin-overview/admin-overview.html + 19 + + + + per User + per Usuari + + apps/client/src/app/components/admin-overview/admin-overview.html + 28 + + + + Exchange Rates + Tipus de Canvi + + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + + Add Currency + Afegir Divisa + + apps/client/src/app/components/admin-overview/admin-overview.html + 104 + + + + User Signup + Registrar Usuari + + apps/client/src/app/components/admin-overview/admin-overview.html + 110 + + + + Read-only Mode + Mode Només Lecutra + + apps/client/src/app/components/admin-overview/admin-overview.html + 124 + + + + Data Gathering + Recollida de Dades + + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + + System Message + Missatge del Sistema + + apps/client/src/app/components/admin-overview/admin-overview.html + 148 + + + + Set Message + Estableix el Missatge + + apps/client/src/app/components/admin-overview/admin-overview.html + 170 + + + + Coupons + Coupons + + apps/client/src/app/components/admin-overview/admin-overview.html + 178 + + + + Add + Afegir + + apps/client/src/app/components/admin-overview/admin-overview.html + 238 + + + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + + Housekeeping + Ordre + + apps/client/src/app/components/admin-overview/admin-overview.html + 246 + + + + Flush Cache + Depurar el Cache + + apps/client/src/app/components/admin-overview/admin-overview.html + 250 + + + + Add Platform + Afegeix Plataforma + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 11 + + + + Accounts + Comptes + + apps/client/src/app/components/admin-platform/admin-platform.component.html + 65 + + + apps/client/src/app/components/admin-users/admin-users.html + 114 + + + apps/client/src/app/components/header/header.component.html + 54 + + + apps/client/src/app/components/header/header.component.html + 255 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 + + + apps/client/src/app/pages/accounts/accounts-page.html + 4 + + + libs/ui/src/lib/assistant/assistant.html + 107 + + + + Do you really want to delete this platform? + Està segur que vol eliminar aquesta plataforma? + + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 86 + + + + Update platform + Actualitzar plataforma + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 + + + + Add platform + Afegeix una plataforma + + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 + + + + Platforms + Plataformes + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 + + + + Tags + Etiquetes + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 10 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 393 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 383 + + + libs/ui/src/lib/assistant/assistant.html + 127 + + + + Add Tag + Afegir Etiqueta + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + + Do you really want to delete this tag? + Està segur que vol eliminar aquesta etiqueta? + + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + + Update tag + Actualitzar etiqueta + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + + Add tag + Afegir etiqueta + + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + + Do you really want to delete this user? + Està segur que vol eliminar aquest usuari? + + apps/client/src/app/components/admin-users/admin-users.component.ts + 125 + + + + User + Usuari + + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + + Registration + Registrar-se + + apps/client/src/app/components/admin-users/admin-users.html + 97 + + + + Engagement per Day + Implicació per Dia + + apps/client/src/app/components/admin-users/admin-users.html + 157 + + + + Last Request + Última Solicitut + + apps/client/src/app/components/admin-users/admin-users.html + 181 + + + + Impersonate User + Actuar com un altre Usuari + + apps/client/src/app/components/admin-users/admin-users.html + 218 + + + + Delete User + Eliminar Usuari + + apps/client/src/app/components/admin-users/admin-users.html + 229 + + + + Performance + Rendiment + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 91 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 + + + + Compare with... + Comparar amb... + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 + + + + Manage Benchmarks + Gestionar els Punts de Referència + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 + + + + Portfolio + Portfolio + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 116 + + + apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts + 41 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + + Benchmark + Punt de Referència + + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 128 + + + + Current Market Mood + Sentiment del Mercat + + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 + + + + Overview + Visió General + + apps/client/src/app/components/header/header.component.html + 28 + + + apps/client/src/app/components/header/header.component.html + 237 + + + + Portfolio + Portfolio + + apps/client/src/app/components/header/header.component.html + 41 + + + apps/client/src/app/components/header/header.component.html + 247 + + + + Admin Control + Panell d’Administració + + apps/client/src/app/components/header/header.component.html + 68 + + + apps/client/src/app/components/header/header.component.html + 271 + + + + Upgrade Plan + Millora la teva Subscripció + + apps/client/src/app/components/header/header.component.html + 178 + + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 59 + + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 16 + + + apps/client/src/app/pages/pricing/pricing-page.html + 271 + + + + Renew Plan + Renova la teva Subscripció + + apps/client/src/app/components/header/header.component.html + 183 + + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 21 + + + apps/client/src/app/pages/pricing/pricing-page.html + 276 + + + + Me + Tu + + apps/client/src/app/components/header/header.component.html + 203 + + + + User + Usuari + + apps/client/src/app/components/header/header.component.html + 221 + + + + My Ghostfolio + El meu Ghostfolio + + apps/client/src/app/components/header/header.component.html + 262 + + + + About Ghostfolio + Sobre Ghostfolio + + apps/client/src/app/components/header/header.component.html + 303 + + + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + + Sign in + Iniciar Sessió + + apps/client/src/app/components/header/header.component.html + 394 + + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 + + + + Get started + Primers Passos + + apps/client/src/app/components/header/header.component.html + 404 + + + + Oops! Incorrect Security Token. + Oooh! El testimoni de seguretat és incorrecte. + + apps/client/src/app/components/header/header.component.ts + 246 + + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 + + + + Change with currency effect + Canvia amb els efectes de la divisa + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 + + + + Change + Canvia + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 65 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 119 + + + + Performance with currency effect + Rendiment amb els efectes de la divisa + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 + + + + Average Unit Price + Preu Mig per Unitat + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 103 + + + + Minimum Price + Preu Mínim + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 130 + + + + Maximum Price + Preu Màxim + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 146 + + + + Quantity + Quantitat + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 156 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 188 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 185 + + + + Investment + Inversió + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 168 + + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 58 + + + + Dividend + Dividend + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 181 + + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 343 + + + apps/client/src/app/pages/features/features-page.html + 63 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 201 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 271 + + + + Dividend Yield + Rendiment del Dividend + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + + Fees + Comissions + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 203 + + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 108 + + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 176 + + + + Activity + Activitat + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + + Report Data Glitch + Informar d’un Problema amb les Dades + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 448 + + + + Active + en Actiiu + + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + + Closed + Finalitzat + + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + + Table + Taula + + apps/client/src/app/components/home-holdings/home-holdings.html + 17 + + + + Chart + Gràfic + + apps/client/src/app/components/home-holdings/home-holdings.html + 20 + + + + Manage Activities + Gestionar Activitats + + apps/client/src/app/components/home-holdings/home-holdings.html + 61 + + + + Fear + Por + + apps/client/src/app/components/home-market/home-market.component.ts + 27 + + + libs/ui/src/lib/i18n.ts + 96 + + + + Greed + Cobdícia + + apps/client/src/app/components/home-market/home-market.component.ts + 28 + + + libs/ui/src/lib/i18n.ts + 97 + + + + Last Days + Últims Dies + + apps/client/src/app/components/home-market/home-market.html + 7 + + + + Welcome to Ghostfolio + Benvingut a Ghostfolio + + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + + Ready to take control of your personal finances? + Estàs preparat per controlar les teves finances personals? + + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + + Setup your accounts + Configura els teus comptes + + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Get a comprehensive financial overview by adding your bank and brokerage accounts. + + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + + Capture your activities + Capture your activities + + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + + Record your investment activities to keep your portfolio up to date. + Record your investment activities to keep your portfolio up to date. + + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + + Monitor and analyze your portfolio + Monitor and analyze your portfolio + + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + + Track your progress in real-time with comprehensive analysis and insights. + Track your progress in real-time with comprehensive analysis and insights. + + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + + Setup accounts + Setup accounts + + apps/client/src/app/components/home-overview/home-overview.html + 44 + + + + Add activity + Add activity + + apps/client/src/app/components/home-overview/home-overview.html + 52 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 8 + + + + Summary + Summary + + apps/client/src/app/components/home-summary/home-summary.html + 2 + + + + Total Amount + Total Amount + + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 + + + + Savings Rate + Savings Rate + + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 213 + + + + Security Token + Security Token + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + + or + or + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 + + + apps/client/src/app/pages/landing/landing-page.html + 47 + + + apps/client/src/app/pages/landing/landing-page.html + 450 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 + + + apps/client/src/app/pages/register/register-page.html + 30 + + + apps/client/src/app/pages/webauthn/webauthn-page.html + 29 + + + + Sign in with Internet Identity + Sign in with Internet Identity + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 + + + + Sign in with Google + Sign in with Google + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 + + + + Stay signed in + Stay signed in + + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 + + + + Oops! A data provider is experiencing the hiccups. + Oops! A data provider is experiencing the hiccups. + + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + + Market data is delayed for + Market data is delayed for + + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + + Time in Market + Time in Market + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 + + + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 + + + + Buy + Buy + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 + + + + Sell + Sell + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 + + + + Absolute Gross Performance + Absolute Gross Performance + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 + + + + Gross Performance + Gross Performance + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 85 + + + + Absolute Net Performance + Absolute Net Performance + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 126 + + + + Net Performance + Net Performance + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 141 + + + + Total Assets + Total Assets + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 167 + + + + Valuables + Valuables + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 180 + + + + Emergency Fund + Emergency Fund + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 192 + + + apps/client/src/app/pages/features/features-page.html + 89 + + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 122 + + + + Cash + Cash + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 226 + + + + Assets + Assets + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + + Buying Power + Buying Power + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 252 + + + + Excluded from Analysis + Excluded from Analysis + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 264 + + + + Liabilities + Liabilities + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 279 + + + apps/client/src/app/pages/features/features-page.html + 102 + + + + Net Worth + Net Worth + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 297 + + + + Annualized Performance + Annualized Performance + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 309 + + + + Interest + Interest + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + + Please enter the amount of your emergency fund: + Please enter the amount of your emergency fund: + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 58 + + + + Are you an ambitious investor who needs the full picture? + Are you an ambitious investor who needs the full picture? + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 12 + + + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 15 + + + + Portfolio Summary + Portfolio Summary + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 22 + + + apps/client/src/app/pages/pricing/pricing-page.html + 57 + + + apps/client/src/app/pages/pricing/pricing-page.html + 203 + + + + Portfolio Allocations + Portfolio Allocations + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 26 + + + apps/client/src/app/pages/features/features-page.html + 161 + + + apps/client/src/app/pages/pricing/pricing-page.html + 61 + + + apps/client/src/app/pages/pricing/pricing-page.html + 207 + + + + Performance Benchmarks + Performance Benchmarks + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 30 + + + apps/client/src/app/pages/pricing/pricing-page.html + 65 + + + apps/client/src/app/pages/pricing/pricing-page.html + 211 + + + + FIRE Calculator + FIRE Calculator + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 34 + + + apps/client/src/app/pages/pricing/pricing-page.html + 69 + + + apps/client/src/app/pages/pricing/pricing-page.html + 215 + + + + Professional Data Provider + Professional Data Provider + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 38 + + + apps/client/src/app/pages/pricing/pricing-page.html + 230 + + + + and more Features... + and more Features... + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 42 + + + apps/client/src/app/pages/pricing/pricing-page.html + 85 + + + apps/client/src/app/pages/pricing/pricing-page.html + 235 + + + + Get the tools to effectively manage your finances and refine your personal investment strategy. + Get the tools to effectively manage your finances and refine your personal investment strategy. + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 45 + + + + Skip + Skip + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 52 + + + + Today + Today + + apps/client/src/app/components/toggle/toggle.component.ts + 22 + + + libs/ui/src/lib/assistant/assistant.component.ts + 215 + + + + YTD + YTD + + apps/client/src/app/components/toggle/toggle.component.ts + 23 + + + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + + 1Y + 1Y + + apps/client/src/app/components/toggle/toggle.component.ts + 24 + + + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + + 5Y + 5Y + + apps/client/src/app/components/toggle/toggle.component.ts + 25 + + + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + + Max + Max + + apps/client/src/app/components/toggle/toggle.component.ts + 26 + + + libs/ui/src/lib/assistant/assistant.component.ts + 253 + + + + Oops! Could not grant access. + Oops! Could not grant access. + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + + Grant access + Grant access + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 + + + + Private + Private + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + + Public + Public + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 + + + + User ID + User ID + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 224 + + + + Granted Access + Granted Access + + apps/client/src/app/components/user-account-access/user-account-access.html + 5 + + + + Please enter your coupon code: + Please enter your coupon code: + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 118 + + + + Could not redeem coupon code + Could not redeem coupon code + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 + + + + Coupon code has been redeemed + Coupon code has been redeemed + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 140 + + + + Reload + Reload + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 141 + + + + per year + per year + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 33 + + + apps/client/src/app/pages/pricing/pricing-page.html + 257 + + + + Try Premium + Try Premium + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 40 + + + + Redeem Coupon + Redeem Coupon + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 54 + + + + Auto + Auto + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 38 + + + + Do you really want to close your Ghostfolio account? + Do you really want to close your Ghostfolio account? + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + + Do you really want to remove this sign in method? + Do you really want to remove this sign in method? + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 252 + + + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 + + + + Settings + Settings + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + Presenter View + Presenter View + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 + + + + Protection for sensitive information like absolute performances and quantity values + Protection for sensitive information like absolute performances and quantity values + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 + + + + Base Currency + Base Currency + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 + + + + Language + Language + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 + + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + + Locale + Locale + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 + + + + Date and number format + Date and number format + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 + + + + Appearance + Appearance + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 148 + + + + Auto + Auto + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 162 + + + + Light + Light + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 163 + + + + Dark + Dark + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 164 + + + + Zen Mode + Zen Mode + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 173 + + + apps/client/src/app/pages/features/features-page.html + 191 + + + + Distraction-free experience for turbulent times + Distraction-free experience for turbulent times + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 174 + + + + Biometric Authentication + Biometric Authentication + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + + Sign in with fingerprint + Sign in with fingerprint + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 + + + + Experimental Features + Experimental Features + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 207 + + + + Sneak peek at upcoming functionality + Sneak peek at upcoming functionality + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 208 + + + + Export Data + Export Data + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 + + + + Danger Zone + Danger Zone + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 + + + + Close Account + Close Account + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 + + + + This feature is currently unavailable. + This feature is currently unavailable. + + apps/client/src/app/core/http-response.interceptor.ts + 53 + + + + Please try again later. + Please try again later. + + apps/client/src/app/core/http-response.interceptor.ts + 55 + + + apps/client/src/app/core/http-response.interceptor.ts + 80 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 138 + + + + This action is not allowed. + This action is not allowed. + + apps/client/src/app/core/http-response.interceptor.ts + 61 + + + + Oops! Something went wrong. + Oops! Something went wrong. + + apps/client/src/app/core/http-response.interceptor.ts + 78 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 136 + + + + Okay + Okay + + apps/client/src/app/core/http-response.interceptor.ts + 81 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 139 + + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! It looks like you’re making too many requests. Please slow down a bit. + + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + + About + About + + apps/client/src/app/pages/about/about-page-routing.module.ts + 51 + + + apps/client/src/app/pages/about/about-page.component.ts + 44 + + + apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts + 13 + + + + Changelog + Changelog + + apps/client/src/app/pages/about/about-page.component.ts + 49 + + + apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts + 13 + + + + License + License + + apps/client/src/app/pages/about/about-page.component.ts + 54 + + + apps/client/src/app/pages/about/license/license-page-routing.module.ts + 13 + + + + Privacy Policy + Privacy Policy + + apps/client/src/app/pages/about/about-page.component.ts + 62 + + + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts + 13 + + + + Our + Our + + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + + Discover other exciting Open Source Software projects + Discover other exciting Open Source Software projects + + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + + Visit + Visit + + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + + Accounts + Accounts + + apps/client/src/app/pages/accounts/accounts-page-routing.module.ts + 13 + + + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + + Update account + Update account + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 + + + + Add account + Add account + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 10 + + + + Account ID + Account ID + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 96 + + + + From + From + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + To + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + + Admin Control + Admin Control + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 20 + + + + Job Queue + Job Queue + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 + + + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + + Market Data + Market Data + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 30 + + + apps/client/src/app/pages/admin/admin-page.component.ts + 37 + + + + Settings + Settings + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 35 + + + apps/client/src/app/pages/admin/admin-page.component.ts + 32 + + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 18 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 35 + + + + Users + Users + + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 40 + + + apps/client/src/app/pages/admin/admin-page.component.ts + 47 + + + + Overview + Overview + + apps/client/src/app/pages/admin/admin-page.component.ts + 27 + + + apps/client/src/app/pages/home/home-page.component.ts + 37 + + + apps/client/src/app/pages/zen/zen-page-routing.module.ts + 19 + + + apps/client/src/app/pages/zen/zen-page.component.ts + 34 + + + + Blog + Blog + + apps/client/src/app/pages/blog/blog-page-routing.module.ts + 13 + + + + Discover the latest Ghostfolio updates and insights on personal finance + Discover the latest Ghostfolio updates and insights on personal finance + + apps/client/src/app/pages/blog/blog-page.html + 7 + + + + As you are already logged in, you cannot access the demo account. + As you are already logged in, you cannot access the demo account. + + apps/client/src/app/pages/demo/demo-page.component.ts + 35 + + + + Frequently Asked Questions (FAQ) + Frequently Asked Questions (FAQ) + + apps/client/src/app/pages/faq/faq-page-routing.module.ts + 34 + + + apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts + 13 + + + + General + General + + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + + Cloud + Cloud + + apps/client/src/app/pages/faq/faq-page.component.ts + 41 + + + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + + Self-Hosting + Self-Hosting + + apps/client/src/app/pages/faq/faq-page.component.ts + 47 + + + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + + self-hosting + self-hosting + + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + + Frequently Asked Questions (FAQ) + Frequently Asked Questions (FAQ) + + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 + + + apps/client/src/app/pages/faq/saas/saas-page.html + 4 + + + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 + + + + FAQ + FAQ + + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + + Check out the numerous features of Ghostfolio to manage your wealth + Check out the numerous features of Ghostfolio to manage your wealth + + apps/client/src/app/pages/features/features-page.html + 6 + + + + Stocks + Stocks + + apps/client/src/app/pages/features/features-page.html + 15 + + + + ETFs + ETFs + + apps/client/src/app/pages/features/features-page.html + 25 + + + + Bonds + Bonds + + apps/client/src/app/pages/features/features-page.html + 38 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/pages/features/features-page.html + 51 + + + + Wealth Items + Wealth Items + + apps/client/src/app/pages/features/features-page.html + 76 + + + + Import and Export + Import and Export + + apps/client/src/app/pages/features/features-page.html + 115 + + + + Multi-Accounts + Multi-Accounts + + apps/client/src/app/pages/features/features-page.html + 127 + + + + Portfolio Calculations + Portfolio Calculations + + apps/client/src/app/pages/features/features-page.html + 141 + + + + Dark Mode + Dark Mode + + apps/client/src/app/pages/features/features-page.html + 178 + + + + Market Mood + Market Mood + + apps/client/src/app/pages/features/features-page.html + 206 + + + + Static Analysis + Static Analysis + + apps/client/src/app/pages/features/features-page.html + 225 + + + + Multi-Language + Multi-Language + + apps/client/src/app/pages/features/features-page.html + 242 + + + + Open Source Software + Open Source Software + + apps/client/src/app/pages/features/features-page.html + 278 + + + + Get Started + Get Started + + apps/client/src/app/pages/features/features-page.html + 303 + + + apps/client/src/app/pages/public/public-page.html + 164 + + + + Holdings + Holdings + + apps/client/src/app/pages/home/home-page-routing.module.ts + 23 + + + apps/client/src/app/pages/home/home-page-routing.module.ts + 28 + + + apps/client/src/app/pages/home/home-page.component.ts + 42 + + + apps/client/src/app/pages/zen/zen-page.component.ts + 39 + + + + Summary + Summary + + apps/client/src/app/pages/home/home-page-routing.module.ts + 33 + + + apps/client/src/app/pages/home/home-page.component.ts + 47 + + + + Markets + Markets + + apps/client/src/app/pages/home/home-page-routing.module.ts + 38 + + + apps/client/src/app/pages/home/home-page.component.ts + 52 + + + apps/client/src/app/pages/markets/markets-page-routing.module.ts + 13 + + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + + My Account + My Account + + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + + Open Source Wealth Management Software + Open Source Wealth Management Software + + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + + Manage your wealth like a boss + Manage your wealth like a boss + + apps/client/src/app/pages/landing/landing-page.html + 5 + + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + + apps/client/src/app/pages/landing/landing-page.html + 9 + + + + Get Started + Get Started + + apps/client/src/app/pages/landing/landing-page.html + 41 + + + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + + Live Demo + Live Demo + + apps/client/src/app/pages/landing/landing-page.html + 49 + + + apps/client/src/app/pages/landing/landing-page.html + 451 + + + + Monthly Active Users + Monthly Active Users + + apps/client/src/app/pages/landing/landing-page.html + 70 + + + + Stars on GitHub + Stars on GitHub + + apps/client/src/app/pages/landing/landing-page.html + 88 + + + apps/client/src/app/pages/open/open-page.html + 103 + + + + Pulls on Docker Hub + Pulls on Docker Hub + + apps/client/src/app/pages/landing/landing-page.html + 106 + + + apps/client/src/app/pages/open/open-page.html + 117 + + + + As seen in + As seen in + + apps/client/src/app/pages/landing/landing-page.html + 115 + + + + Protect your assets. Refine your personal investment strategy. + Protect your assets. Refine your personal investment strategy. + + apps/client/src/app/pages/landing/landing-page.html + 225 + + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + + apps/client/src/app/pages/landing/landing-page.html + 229 + + + + 360° View + 360° View + + apps/client/src/app/pages/landing/landing-page.html + 240 + + + + Get the full picture of your personal finances across multiple platforms. + Get the full picture of your personal finances across multiple platforms. + + apps/client/src/app/pages/landing/landing-page.html + 242 + + + + Web3 Ready + Web3 Ready + + apps/client/src/app/pages/landing/landing-page.html + 251 + + + + Use Ghostfolio anonymously and own your financial data. + Use Ghostfolio anonymously and own your financial data. + + apps/client/src/app/pages/landing/landing-page.html + 253 + + + + Open Source + Open Source + + apps/client/src/app/pages/landing/landing-page.html + 261 + + + + Benefit from continuous improvements through a strong community. + Benefit from continuous improvements through a strong community. + + apps/client/src/app/pages/landing/landing-page.html + 263 + + + + Why Ghostfolio? + Why Ghostfolio? + + apps/client/src/app/pages/landing/landing-page.html + 272 + + + + Ghostfolio is for you if you are... + Ghostfolio is for you if you are... + + apps/client/src/app/pages/landing/landing-page.html + 273 + + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + trading stocks, ETFs or cryptocurrencies on multiple platforms + + apps/client/src/app/pages/landing/landing-page.html + 280 + + + + pursuing a buy & hold strategy + pursuing a buy & hold strategy + + apps/client/src/app/pages/landing/landing-page.html + 286 + + + + interested in getting insights of your portfolio composition + interested in getting insights of your portfolio composition + + apps/client/src/app/pages/landing/landing-page.html + 291 + + + + valuing privacy and data ownership + valuing privacy and data ownership + + apps/client/src/app/pages/landing/landing-page.html + 296 + + + + into minimalism + into minimalism + + apps/client/src/app/pages/landing/landing-page.html + 299 + + + + caring about diversifying your financial resources + caring about diversifying your financial resources + + apps/client/src/app/pages/landing/landing-page.html + 303 + + + + interested in financial independence + interested in financial independence + + apps/client/src/app/pages/landing/landing-page.html + 307 + + + + saying no to spreadsheets in + saying no to spreadsheets in + + apps/client/src/app/pages/landing/landing-page.html + 311 + + + + still reading this list + still reading this list + + apps/client/src/app/pages/landing/landing-page.html + 314 + + + + Learn more about Ghostfolio + Learn more about Ghostfolio + + apps/client/src/app/pages/landing/landing-page.html + 319 + + + + What our users are saying + What our users are saying + + apps/client/src/app/pages/landing/landing-page.html + 327 + + + + Members from around the globe are using Ghostfolio Premium + Members from around the globe are using Ghostfolio Premium + + apps/client/src/app/pages/landing/landing-page.html + 366 + + + + How does Ghostfolio work? + How does Ghostfolio work? + + apps/client/src/app/pages/landing/landing-page.html + 383 + + + + Get started in only 3 steps + Get started in only 3 steps + + apps/client/src/app/pages/landing/landing-page.html + 386 + + + + Sign up anonymously* + Sign up anonymously* + + apps/client/src/app/pages/landing/landing-page.html + 392 + + + + * no e-mail address nor credit card required + * no e-mail address nor credit card required + + apps/client/src/app/pages/landing/landing-page.html + 394 + + + + Add any of your historical transactions + Add any of your historical transactions + + apps/client/src/app/pages/landing/landing-page.html + 405 + + + + Get valuable insights of your portfolio composition + Get valuable insights of your portfolio composition + + apps/client/src/app/pages/landing/landing-page.html + 417 + + + + Are you ready? + Are you ready? + + apps/client/src/app/pages/landing/landing-page.html + 431 + + + + Join now or check out the example account + Join now or check out the example account + + apps/client/src/app/pages/landing/landing-page.html + 434 + + + + Get Started + Get Started + + apps/client/src/app/pages/landing/landing-page.html + 446 + + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + + apps/client/src/app/pages/open/open-page.html + 6 + + + + (Last 24 hours) + (Last 24 hours) + + apps/client/src/app/pages/open/open-page.html + 37 + + + + Active Users + Active Users + + apps/client/src/app/pages/open/open-page.html + 40 + + + apps/client/src/app/pages/open/open-page.html + 62 + + + + (Last 30 days) + (Last 30 days) + + apps/client/src/app/pages/open/open-page.html + 48 + + + apps/client/src/app/pages/open/open-page.html + 59 + + + + New Users + New Users + + apps/client/src/app/pages/open/open-page.html + 51 + + + + Users in Slack community + Users in Slack community + + apps/client/src/app/pages/open/open-page.html + 75 + + + + Contributors on GitHub + Contributors on GitHub + + apps/client/src/app/pages/open/open-page.html + 89 + + + + (Last 90 days) + (Last 90 days) + + apps/client/src/app/pages/open/open-page.html + 127 + + + + Uptime + Uptime + + apps/client/src/app/pages/open/open-page.html + 132 + + + + Activities + Activities + + apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts + 13 + + + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 39 + + + + Update activity + Update activity + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 + + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Stocks, ETFs, bonds, cryptocurrencies, commodities + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + + One-time fee, annual account fees + One-time fee, annual account fees + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + + Distribution of corporate earnings + Distribution of corporate earnings + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + + Revenue for lending out money + Revenue for lending out money + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + + Mortgages, personal loans, credit cards + Mortgages, personal loans, credit cards + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + + Luxury items, real estate, private companies + Luxury items, real estate, private companies + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + + Account + Account + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 307 + + + + Update Cash Balance + Update Cash Balance + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 + + + + Unit Price + Unit Price + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 213 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 286 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 209 + + + + Oops! Could not get the historical exchange rate from + Oops! Could not get the historical exchange rate from + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 240 + + + + Fee + Fee + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 330 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 233 + + + + Oops! Could not get the historical exchange rate from + Oops! Could not get the historical exchange rate from + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + + Import Activities + Import Activities + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 45 + + + + Import Dividends + Import Dividends + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 86 + + + + Importing data... + Importing data... + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 120 + + + + Import has been completed + Import has been completed + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 128 + + + + Validating data... + Validating data... + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 234 + + + + Select Holding + Select Holding + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 + + + + Select File + Select File + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 + + + + Holding + Holding + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 + + + + Load Dividends + Load Dividends + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 + + + + Choose or drop a file here + Choose or drop a file here + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 + + + + The following file formats are supported: + The following file formats are supported: + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 + + + + Select Dividends + Select Dividends + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 + + + + Select Activities + Select Activities + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 + + + + Back + Back + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 + + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 + + + + Allocations + Allocations + + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts + 13 + + + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 44 + + + + Allocations + Allocations + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 + + + + Proportion of Net Worth + Proportion of Net Worth + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 + + + + By Platform + By Platform + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 + + + + By Currency + By Currency + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 63 + + + + By Asset Class + By Asset Class + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 + + + + By Holding + By Holding + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 + + + + By Sector + By Sector + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 + + + + By Continent + By Continent + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 + + + + By Market + By Market + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + + Regions + Regions + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 + + + apps/client/src/app/pages/public/public-page.html + 87 + + + + Developed Markets + Developed Markets + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 + + + apps/client/src/app/pages/public/public-page.html + 104 + + + + Emerging Markets + Emerging Markets + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 231 + + + apps/client/src/app/pages/public/public-page.html + 113 + + + + Other Markets + Other Markets + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 + + + apps/client/src/app/pages/public/public-page.html + 122 + + + + No data available + No data available + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 + + + apps/client/src/app/pages/public/public-page.html + 132 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + + By Country + By Country + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 + + + + By Account + By Account + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 + + + + By ETF Provider + By ETF Provider + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 + + + + By ETF Holding + By ETF Holding + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 + + + + Analysis + Analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts + 13 + + + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 34 + + + + Dividend + Dividend + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 38 + + + libs/ui/src/lib/i18n.ts + 35 + + + + Investment + Investment + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 + + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + + Monthly + Monthly + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 50 + + + + Yearly + Yearly + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 51 + + + + Analysis + Analysis + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 + + + + Absolute Asset Performance + Absolute Asset Performance + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + + Asset Performance + Asset Performance + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + + Absolute Currency Performance + Absolute Currency Performance + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + + Currency Performance + Currency Performance + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + + Absolute Net Performance + Absolute Net Performance + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + + Net Performance + Net Performance + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + + Top + Top + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 166 + + + + Bottom + Bottom + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 215 + + + + Portfolio Evolution + Portfolio Evolution + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 268 + + + + Investment Timeline + Investment Timeline + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 296 + + + + Current Streak + Current Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 317 + + + + Longest Streak + Longest Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 326 + + + + Dividend Timeline + Dividend Timeline + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 354 + + + + FIRE + FIRE + + apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts + 13 + + + + FIRE + FIRE + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 4 + + + + Calculator + Calculator + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 + + + + 4% Rule + 4% Rule + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 + + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + + Currency Cluster Risks + Currency Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + + Account Cluster Risks + Account Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + + Pricing + Pricing + + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 + + + + Pricing Plans + Pricing Plans + + apps/client/src/app/pages/pricing/pricing-page.html + 4 + + + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + + apps/client/src/app/pages/pricing/pricing-page.html + 6 + + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + + apps/client/src/app/pages/pricing/pricing-page.html + 38 + + + + Unlimited Transactions + Unlimited Transactions + + apps/client/src/app/pages/pricing/pricing-page.html + 45 + + + apps/client/src/app/pages/pricing/pricing-page.html + 129 + + + apps/client/src/app/pages/pricing/pricing-page.html + 191 + + + + Unlimited Accounts + Unlimited Accounts + + apps/client/src/app/pages/pricing/pricing-page.html + 49 + + + apps/client/src/app/pages/pricing/pricing-page.html + 133 + + + apps/client/src/app/pages/pricing/pricing-page.html + 195 + + + + Portfolio Performance + Portfolio Performance + + apps/client/src/app/pages/pricing/pricing-page.html + 53 + + + apps/client/src/app/pages/pricing/pricing-page.html + 137 + + + apps/client/src/app/pages/pricing/pricing-page.html + 199 + + + + Data Import and Export + Data Import and Export + + apps/client/src/app/pages/pricing/pricing-page.html + 73 + + + apps/client/src/app/pages/pricing/pricing-page.html + 141 + + + apps/client/src/app/pages/pricing/pricing-page.html + 219 + + + + Community Support + Community Support + + apps/client/src/app/pages/pricing/pricing-page.html + 90 + + + + Self-hosted, update manually. + Self-hosted, update manually. + + apps/client/src/app/pages/pricing/pricing-page.html + 94 + + + + Free + Free + + apps/client/src/app/pages/pricing/pricing-page.html + 95 + + + apps/client/src/app/pages/pricing/pricing-page.html + 153 + + + + For new investors who are just getting started with trading. + For new investors who are just getting started with trading. + + apps/client/src/app/pages/pricing/pricing-page.html + 123 + + + + Fully managed Ghostfolio cloud offering. + Fully managed Ghostfolio cloud offering. + + apps/client/src/app/pages/pricing/pricing-page.html + 152 + + + apps/client/src/app/pages/pricing/pricing-page.html + 244 + + + + For ambitious investors who need the full picture of their financial assets. + For ambitious investors who need the full picture of their financial assets. + + apps/client/src/app/pages/pricing/pricing-page.html + 184 + + + + Email and Chat Support + Email and Chat Support + + apps/client/src/app/pages/pricing/pricing-page.html + 240 + + + + One-time payment, no auto-renewal. + One-time payment, no auto-renewal. + + apps/client/src/app/pages/pricing/pricing-page.html + 280 + + + + It’s free. + It’s free. + + apps/client/src/app/pages/pricing/pricing-page.html + 301 + + + + Hello, has shared a Portfolio with you! + Hello, has shared a Portfolio with you! + + apps/client/src/app/pages/public/public-page.html + 4 + + + + Currencies + Currencies + + apps/client/src/app/pages/public/public-page.html + 32 + + + + Continents + Continents + + apps/client/src/app/pages/public/public-page.html + 68 + + + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? + + apps/client/src/app/pages/public/public-page.html + 155 + + + + Ghostfolio empowers you to keep track of your wealth. + Ghostfolio empowers you to keep track of your wealth. + + apps/client/src/app/pages/public/public-page.html + 159 + + + + Registration + Registration + + apps/client/src/app/pages/register/register-page-routing.module.ts + 13 + + + + Continue with Internet Identity + Continue with Internet Identity + + apps/client/src/app/pages/register/register-page.html + 42 + + + + Continue with Google + Continue with Google + + apps/client/src/app/pages/register/register-page.html + 53 + + + + Copy to clipboard + Copy to clipboard + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 26 + + + + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 32 + + + + Agree and continue + Agree and continue + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 45 + + + + Personal Finance Tools + Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 14 + + + + open-source-alternative-to + open-source-alternative-to + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + + Open Source Alternative to + Open Source Alternative to + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + + Discover Open Source Alternatives for Personal Finance Tools + Discover Open Source Alternatives for Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 + + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + + Open Source Alternative to + Open Source Alternative to + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + + Switzerland + Switzerland + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 + + + libs/ui/src/lib/i18n.ts + 89 + + + + Global + Global + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 + + + libs/ui/src/lib/i18n.ts + 16 + + + + The Open Source Alternative to + The Open Source Alternative to + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + + Ghostfolio vs comparison table + Ghostfolio vs comparison table + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + + Founded + Founded + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 72 + + + + Origin + Origin + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + + Region + Region + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + + Available in + Available in + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + + ✅ Yes + ✅ Yes + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + + ❌ No + ❌ No + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + + ❌ No + ❌ No + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + + Self-Hosting + Self-Hosting + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + + Use anonymously + Use anonymously + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + + Free Plan + Free Plan + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + + Starting from + Starting from + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + + year + year + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + + Notes + Notes + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + + Ready to take your investments to the next level? + Ready to take your investments to the next level? + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + + Get Started + Get Started + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + + Personal Finance Tools + Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + + Resources + Resources + + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 13 + + + + Guides + Guides + + apps/client/src/app/pages/resources/resources-page.html + 22 + + + + Glossary + Glossary + + apps/client/src/app/pages/resources/resources-page.html + 124 + + + + Membership + Membership + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + + Access + Access + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + + My Ghostfolio + My Ghostfolio + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 33 + + + + Oops, authentication has failed. + Oops, authentication has failed. + + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 + + + + Try again + Try again + + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 + + + + Go back to Home Page + Go back to Home Page + + apps/client/src/app/pages/webauthn/webauthn-page.html + 31 + + + + Do you really want to delete this account balance? + Do you really want to delete this account balance? + + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + + Import Activities + Import Activities + + libs/ui/src/lib/activities-table/activities-table.component.html + 9 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 370 + + + + Import Dividends + Import Dividends + + libs/ui/src/lib/activities-table/activities-table.component.html + 29 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 382 + + + + Export Activities + Export Activities + + libs/ui/src/lib/activities-table/activities-table.component.html + 41 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 395 + + + + Export Drafts as ICS + Export Drafts as ICS + + libs/ui/src/lib/activities-table/activities-table.component.html + 54 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 408 + + + + Delete Activities + Delete Activities + + libs/ui/src/lib/activities-table/activities-table.component.html + 66 + + + + Draft + Draft + + libs/ui/src/lib/activities-table/activities-table.component.html + 144 + + + + Clone + Clone + + libs/ui/src/lib/activities-table/activities-table.component.html + 435 + + + + Export Draft as ICS + Export Draft as ICS + + libs/ui/src/lib/activities-table/activities-table.component.html + 445 + + + + Do you really want to delete these activities? + Do you really want to delete these activities? + + libs/ui/src/lib/activities-table/activities-table.component.ts + 225 + + + + Do you really want to delete this activity? + Do you really want to delete this activity? + + libs/ui/src/lib/activities-table/activities-table.component.ts + 235 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + + Week to date + Week to date + + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + + WTD + WTD + + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + + Month to date + Month to date + + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + + MTD + MTD + + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + + Year to date + Year to date + + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + + year + year + + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + + years + years + + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profiles + Asset Profiles + + libs/ui/src/lib/assistant/assistant.html + 67 + + + + Date Range + Date Range + + libs/ui/src/lib/assistant/assistant.html + 93 + + + + Asset Classes + Asset Classes + + libs/ui/src/lib/assistant/assistant.html + 138 + + + + Reset Filters + Reset Filters + + libs/ui/src/lib/assistant/assistant.html + 155 + + + + Apply Filters + Apply Filters + + libs/ui/src/lib/assistant/assistant.html + 165 + + + + Index + Index + + libs/ui/src/lib/benchmark/benchmark.component.html + 3 + + + + 50-Day Trend + 50-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + + Change from All Time High + Change from All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 81 + + + + from ATH + from ATH + + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + + Market data provided by + Market data provided by + + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + + Savings Rate per Month + Savings Rate per Month + + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + + Annual Interest Rate + Annual Interest Rate + + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + + Retirement Date + Retirement Date + + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + + Projected Total Amount + Projected Total Amount + + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 + + + + Deposit + Deposit + + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 361 + + + + Interest + Interest + + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 371 + + + libs/ui/src/lib/i18n.ts + 37 + + + + Savings + Savings + + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 381 + + + + Allocation + Allocation + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + + + + Show all + Show all + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 + + + + Account + Account + + libs/ui/src/lib/i18n.ts + 4 + + + + Asia-Pacific + Asia-Pacific + + libs/ui/src/lib/i18n.ts + 5 + + + + Asset Class + Asset Class + + libs/ui/src/lib/i18n.ts + 6 + + + + Asset Sub Class + Asset Sub Class + + libs/ui/src/lib/i18n.ts + 7 + + + + Buy and sell + Buy and sell + + libs/ui/src/lib/i18n.ts + 8 + + + + Core + Core + + libs/ui/src/lib/i18n.ts + 10 + + + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + + libs/ui/src/lib/i18n.ts + 12 + + + + Switch to Ghostfolio Premium easily + Switch to Ghostfolio Premium easily + + libs/ui/src/lib/i18n.ts + 13 + + + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + + libs/ui/src/lib/i18n.ts + 14 + + + + Emergency Fund + Emergency Fund + + libs/ui/src/lib/i18n.ts + 15 + + + + Grant + Grant + + libs/ui/src/lib/i18n.ts + 17 + + + + Higher Risk + Higher Risk + + libs/ui/src/lib/i18n.ts + 18 + + + + This activity already exists. + This activity already exists. + + libs/ui/src/lib/i18n.ts + 19 + + + + Japan + Japan + + libs/ui/src/lib/i18n.ts + 83 + + + + Lower Risk + Lower Risk + + libs/ui/src/lib/i18n.ts + 20 + + + + Month + Month + + libs/ui/src/lib/i18n.ts + 21 + + + + Months + Months + + libs/ui/src/lib/i18n.ts + 22 + + + + Other + Other + + libs/ui/src/lib/i18n.ts + 23 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 403 + + + + Preset + Preset + + libs/ui/src/lib/i18n.ts + 24 + + + + Retirement Provision + Retirement Provision + + libs/ui/src/lib/i18n.ts + 25 + + + + Satellite + Satellite + + libs/ui/src/lib/i18n.ts + 26 + + + + Symbol + Symbol + + libs/ui/src/lib/i18n.ts + 27 + + + + Tag + Tag + + libs/ui/src/lib/i18n.ts + 28 + + + + Year + Year + + libs/ui/src/lib/i18n.ts + 29 + + + + Years + Years + + libs/ui/src/lib/i18n.ts + 30 + + + + Buy + Buy + + libs/ui/src/lib/i18n.ts + 34 + + + + Fee + Fee + + libs/ui/src/lib/i18n.ts + 36 + + + + Valuable + Valuable + + libs/ui/src/lib/i18n.ts + 38 + + + + Liability + Liability + + libs/ui/src/lib/i18n.ts + 39 + + + + Sell + Sell + + libs/ui/src/lib/i18n.ts + 40 + + + + Cash + Cash + + libs/ui/src/lib/i18n.ts + 43 + + + + Commodity + Commodity + + libs/ui/src/lib/i18n.ts + 44 + + + + Equity + Patrimoni + + libs/ui/src/lib/i18n.ts + 45 + + + + Fixed Income + Fixed Income + + libs/ui/src/lib/i18n.ts + 46 + + + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 47 + + + + Real Estate + Real Estate + + libs/ui/src/lib/i18n.ts + 48 + + + + Bond + Bond + + libs/ui/src/lib/i18n.ts + 51 + + + + Cryptocurrency + Cryptocurrency + + libs/ui/src/lib/i18n.ts + 52 + + + + ETF + ETF + + libs/ui/src/lib/i18n.ts + 53 + + + + Mutual Fund + Mutual Fund + + libs/ui/src/lib/i18n.ts + 54 + + + + Precious Metal + Precious Metal + + libs/ui/src/lib/i18n.ts + 55 + + + + Private Equity + Private Equity + + libs/ui/src/lib/i18n.ts + 56 + + + + Stock + Stock + + libs/ui/src/lib/i18n.ts + 57 + + + + Africa + Africa + + libs/ui/src/lib/i18n.ts + 64 + + + + Asia + Asia + + libs/ui/src/lib/i18n.ts + 65 + + + + Europe + Europe + + libs/ui/src/lib/i18n.ts + 66 + + + + North America + North America + + libs/ui/src/lib/i18n.ts + 67 + + + + Oceania + Oceania + + libs/ui/src/lib/i18n.ts + 68 + + + + South America + South America + + libs/ui/src/lib/i18n.ts + 69 + + + + Extreme Fear + Extreme Fear + + libs/ui/src/lib/i18n.ts + 94 + + + + Extreme Greed + Extreme Greed + + libs/ui/src/lib/i18n.ts + 95 + + + + Neutral + Neutral + + libs/ui/src/lib/i18n.ts + 98 + + + + Membership + Membership + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + + + + Valid until + Valid until + + libs/ui/src/lib/membership-card/membership-card.component.html + 23 + + + + Time to add your first activity. + Time to add your first activity. + + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 + + + + No data available + No data available + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 405 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 418 + + + + Show more + Show more + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + + + Alternative + Alternative + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 + + + + App + App + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 + + + + Budgeting + Budgeting + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 + + + + Community + Community + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 + + + + Family Office + Family Office + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + + Investor + Investor + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 + + + + Open Source + Open Source + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 + + + + Personal Finance + Personal Finance + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 + + + + Privacy + Privacy + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 + + + + Software + Software + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 + + + + Tool + Tool + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 + + + + User Experience + User Experience + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 + + + + Wealth + Wealth + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 + + + + Wealth Management + Wealth Management + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 + + + + Australia + Australia + + libs/ui/src/lib/i18n.ts + 72 + + + + Austria + Austria + + libs/ui/src/lib/i18n.ts + 73 + + + + Belgium + Belgium + + libs/ui/src/lib/i18n.ts + 74 + + + + Bulgaria + Bulgaria + + libs/ui/src/lib/i18n.ts + 75 + + + + Canada + Canada + + libs/ui/src/lib/i18n.ts + 76 + + + + Czech Republic + Czech Republic + + libs/ui/src/lib/i18n.ts + 77 + + + + Finland + Finland + + libs/ui/src/lib/i18n.ts + 78 + + + + France + France + + libs/ui/src/lib/i18n.ts + 79 + + + + Germany + Germany + + libs/ui/src/lib/i18n.ts + 80 + + + + India + India + + libs/ui/src/lib/i18n.ts + 81 + + + + Italy + Italy + + libs/ui/src/lib/i18n.ts + 82 + + + + Netherlands + Netherlands + + libs/ui/src/lib/i18n.ts + 84 + + + + New Zealand + New Zealand + + libs/ui/src/lib/i18n.ts + 85 + + + + Poland + Poland + + libs/ui/src/lib/i18n.ts + 86 + + + + Romania + Romania + + libs/ui/src/lib/i18n.ts + 87 + + + + South Africa + South Africa + + libs/ui/src/lib/i18n.ts + 88 + + + + Thailand + Thailand + + libs/ui/src/lib/i18n.ts + 90 + + + + United States + United States + + libs/ui/src/lib/i18n.ts + 91 + + + + Error + Error + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 + + + + Deactivate + Deactivate + + apps/client/src/app/components/rule/rule.component.html + 67 + + + + Activate + Activate + + apps/client/src/app/components/rule/rule.component.html + 69 + + + + Inactive + Inactive + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 + + + + Cancel + Cancel + + libs/ui/src/lib/i18n.ts + 9 + + + + Close + Close + + libs/ui/src/lib/i18n.ts + 11 + + + + Yes + Yes + + libs/ui/src/lib/i18n.ts + 31 + + + + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 378ee9b59..7b14fd7ff 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -6,23 +6,23 @@ Registrieren apps/client/src/app/app.component.html - 18 + 13 apps/client/src/app/pages/register/register-page.html - 26 + 27 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 - + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst. apps/client/src/app/app.component.html - 182 + 199 @@ -30,7 +30,7 @@ Empfänger apps/client/src/app/components/access-table/access-table.component.html - 10 + 11 @@ -38,7 +38,7 @@ Typ apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + 31 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -46,7 +46,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + 15 libs/ui/src/lib/activities-table/activities-table.component.html @@ -58,7 +58,7 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 32 + 33 @@ -66,7 +66,7 @@ Widerrufen apps/client/src/app/components/access-table/access-table.component.html - 59 + 62 @@ -74,7 +74,7 @@ Möchtest du diese Zugangsberechtigung wirklich widerrufen? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 56 @@ -90,11 +90,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + 119 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + 152 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -102,15 +102,15 @@ apps/client/src/app/components/admin-users/admin-users.html - 134 + 135 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + 225 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -122,15 +122,15 @@ Name apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 + 43 apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 + 228 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -138,7 +138,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + 15 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -146,7 +146,7 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + 15 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -154,7 +154,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + 138 libs/ui/src/lib/activities-table/activities-table.component.html @@ -164,13 +164,17 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 28 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + Total Gesamt apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + 55 @@ -178,43 +182,43 @@ Wert apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + 171 apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + 206 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + 53 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 207 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + 210 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + 274 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + 277 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 280 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + 283 libs/ui/src/lib/account-balances/account-balances.component.html @@ -232,25 +236,29 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 74 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + Edit Bearbeiten apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 278 apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + 215 apps/client/src/app/components/admin-overview/admin-overview.html - 80 + 78 apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + 92 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -266,27 +274,27 @@ Löschen apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + 288 apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 + 236 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 64 apps/client/src/app/components/admin-overview/admin-overview.html - 90 + 88 apps/client/src/app/components/admin-overview/admin-overview.html - 199 + 205 apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + 102 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -306,7 +314,7 @@ Möchtest du dieses Konto wirklich löschen? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + 110 @@ -314,7 +322,7 @@ Jobs löschen apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + 149 @@ -322,23 +330,23 @@ Symbol apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 + 44 apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + 46 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + 117 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + 36 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + 305 @@ -346,19 +354,19 @@ Datenquelle apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + 53 apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + 77 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 127 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + 154 @@ -366,7 +374,7 @@ Versuche apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + 81 @@ -374,7 +382,7 @@ Erstellt apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + 90 @@ -382,7 +390,7 @@ Abgeschlossen apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + 99 @@ -390,7 +398,7 @@ Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + 108 @@ -401,8 +409,8 @@ 67 - - Historical Market Data + + Historical Market Data Historische Marktdaten apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -414,7 +422,7 @@ Daten anzeigen apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + 164 @@ -422,7 +430,7 @@ Stacktrace anzeigen apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + 171 @@ -430,7 +438,7 @@ Job löschen apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + 177 @@ -450,7 +458,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + 160 libs/ui/src/lib/account-balances/account-balances.component.html @@ -470,7 +478,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + 114 @@ -482,19 +490,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + 378 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + 43 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + 42 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 + 25 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -506,11 +514,11 @@ apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + 65 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + 427 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -526,19 +534,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + 385 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + 50 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + 49 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + 32 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -550,7 +558,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + 434 @@ -558,15 +566,15 @@ Erste Aktivität apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + 143 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 213 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -578,7 +586,7 @@ Anzahl Aktivitäten apps/client/src/app/components/admin-overview/admin-overview.html - 23 + 19 @@ -586,11 +594,11 @@ Historische Daten apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 122 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + 84 @@ -598,7 +606,7 @@ Bitte Währung hinzufügen: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + 125 @@ -606,7 +614,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + 152 @@ -614,7 +622,7 @@ Möchtest du diese Währung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + 165 @@ -622,7 +630,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + 202 @@ -630,7 +638,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + 222 @@ -646,7 +654,7 @@ pro Benutzer apps/client/src/app/components/admin-overview/admin-overview.html - 32 + 28 @@ -654,7 +662,7 @@ Letzte Daten einholen apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + 177 @@ -662,7 +670,7 @@ Alle Daten einholen apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + 180 @@ -670,7 +678,7 @@ Profildaten herunterladen apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + 183 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -682,7 +690,7 @@ Wechselkurse apps/client/src/app/components/admin-overview/admin-overview.html - 37 + 34 @@ -698,7 +706,7 @@ Systemmeldung apps/client/src/app/components/admin-overview/admin-overview.html - 145 + 148 @@ -706,7 +714,7 @@ Systemmeldung setzen apps/client/src/app/components/admin-overview/admin-overview.html - 165 + 170 @@ -714,7 +722,7 @@ Lese-Modus apps/client/src/app/components/admin-overview/admin-overview.html - 123 + 124 @@ -722,7 +730,7 @@ Gutscheincodes apps/client/src/app/components/admin-overview/admin-overview.html - 173 + 178 @@ -730,7 +738,7 @@ Hinzufügen apps/client/src/app/components/admin-overview/admin-overview.html - 231 + 238 libs/ui/src/lib/account-balances/account-balances.component.html @@ -742,7 +750,7 @@ Verwaltung apps/client/src/app/components/admin-overview/admin-overview.html - 238 + 246 @@ -750,7 +758,7 @@ Cache leeren apps/client/src/app/components/admin-overview/admin-overview.html - 242 + 250 @@ -758,7 +766,7 @@ Möchtest du diesen Benutzer wirklich löschen? apps/client/src/app/components/admin-users/admin-users.component.ts - 113 + 125 @@ -766,7 +774,7 @@ Benutzer apps/client/src/app/components/header/header.component.html - 230 + 221 @@ -774,7 +782,7 @@ Registrierung apps/client/src/app/components/admin-users/admin-users.html - 96 + 97 @@ -782,15 +790,15 @@ Engagement pro Tag apps/client/src/app/components/admin-users/admin-users.html - 158 + 157 - + Last Request Letzte Abfrage apps/client/src/app/components/admin-users/admin-users.html - 183 + 181 @@ -810,7 +818,7 @@ apps/client/src/app/components/header/header.component.html - 244 + 237 @@ -822,7 +830,7 @@ apps/client/src/app/components/header/header.component.html - 254 + 247 @@ -830,11 +838,11 @@ Konten apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 + 65 apps/client/src/app/components/admin-users/admin-users.html - 113 + 114 apps/client/src/app/components/header/header.component.html @@ -842,11 +850,11 @@ apps/client/src/app/components/header/header.component.html - 262 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -862,11 +870,11 @@ Administration apps/client/src/app/components/header/header.component.html - 67 + 68 apps/client/src/app/components/header/header.component.html - 278 + 271 @@ -874,15 +882,15 @@ Ressourcen apps/client/src/app/app.component.html - 60 + 61 apps/client/src/app/components/header/header.component.html - 80 + 82 apps/client/src/app/components/header/header.component.html - 289 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -894,7 +902,7 @@ Preise apps/client/src/app/app.component.html - 86 + 94 apps/client/src/app/components/header/header.component.html @@ -902,295 +910,87 @@ apps/client/src/app/components/header/header.component.html - 301 + 294 apps/client/src/app/components/header/header.component.html - 370 + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + About + Über - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 351 + + + Me + Ich - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 203 + + + My Ghostfolio + Mein Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 262 + + + About Ghostfolio + Über Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 303 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + Features + Features - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 76 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 338 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/features/features-page.html + 5 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - - About - Über - - apps/client/src/app/app.component.html - 66 - - - apps/client/src/app/components/header/header.component.html - 111 - - - apps/client/src/app/components/header/header.component.html - 357 - - - - Me - Ich - - apps/client/src/app/components/header/header.component.html - 211 - - - - My Ghostfolio - Mein Ghostfolio - - apps/client/src/app/components/header/header.component.html - 269 - - - - About Ghostfolio - Über Ghostfolio - - apps/client/src/app/components/header/header.component.html - 309 - - - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 - - - - Features - Features - - apps/client/src/app/app.component.html - 73 - - - apps/client/src/app/components/header/header.component.html - 344 - - - apps/client/src/app/pages/features/features-page.html - 5 - - - - Markets - Märkte + + + Markets + Märkte apps/client/src/app/app.component.html 58 apps/client/src/app/components/header/header.component.html - 386 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1206,11 +1006,11 @@ Registrieren apps/client/src/app/pages/features/features-page.html - 300 + 303 apps/client/src/app/pages/public/public-page.html - 153 + 164 @@ -1222,7 +1022,7 @@ apps/client/src/app/components/header/header.component.ts - 229 + 231 @@ -1230,7 +1030,11 @@ Ups! Falsches Sicherheits-Token. apps/client/src/app/components/header/header.component.ts - 243 + 246 + + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 @@ -1238,7 +1042,7 @@ Aktivitäten verwalten apps/client/src/app/components/home-holdings/home-holdings.html - 32 + 61 @@ -1246,7 +1050,7 @@ Letzte Tage apps/client/src/app/components/home-market/home-market.html - 6 + 7 @@ -1264,6 +1068,10 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 10 @@ -1278,15 +1086,19 @@ apps/client/src/app/pages/landing/landing-page.html - 423 + 47 + + + apps/client/src/app/pages/landing/landing-page.html + 450 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 + 97 apps/client/src/app/pages/register/register-page.html - 29 + 30 apps/client/src/app/pages/webauthn/webauthn-page.html @@ -1322,7 +1134,7 @@ Einloggen apps/client/src/app/components/header/header.component.html - 399 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1358,7 +1170,7 @@ Einlage apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 168 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1386,7 +1198,7 @@ Absolute Netto Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 + 126 @@ -1394,7 +1206,7 @@ Netto Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 + 141 @@ -1402,7 +1214,7 @@ Gesamtanlagevermögen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 + 167 @@ -1410,7 +1222,7 @@ Wertsachen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 + 180 @@ -1418,7 +1230,7 @@ Notfallfonds apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 + 192 apps/client/src/app/pages/features/features-page.html @@ -1434,7 +1246,7 @@ Kaufkraft apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 + 252 @@ -1442,7 +1254,7 @@ Gesamtvermögen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 + 297 @@ -1450,7 +1262,7 @@ Performance pro Jahr apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 + 309 @@ -1458,11 +1270,11 @@ Dividenden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 + 181 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 + 343 apps/client/src/app/pages/features/features-page.html @@ -1470,11 +1282,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 + 271 @@ -1482,7 +1294,7 @@ Bitte gib den Betrag deines Notfallfonds ein: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 + 58 @@ -1490,19 +1302,19 @@ Sektoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 204 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + 329 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 274 apps/client/src/app/pages/public/public-page.html - 45 + 50 @@ -1510,15 +1322,15 @@ Länder apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 214 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + 340 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + 286 @@ -1530,11 +1342,15 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 + 393 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 + 383 libs/ui/src/lib/assistant/assistant.html @@ -1546,7 +1362,7 @@ Datenfehler melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 + 448 @@ -1556,6 +1372,10 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 98 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + Performance @@ -1566,7 +1386,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 + 91 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1641,36 +1461,12 @@ 253 - - This feature requires a subscription. - Diese Funktion erfordert ein Abonnement. - - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 - - - apps/client/src/app/core/http-response.interceptor.ts - 69 - - - - Upgrade Plan - Abonnement abschliessen - - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 - - - apps/client/src/app/core/http-response.interceptor.ts - 72 - - Okay Okay apps/client/src/app/core/http-response.interceptor.ts - 92 + 81 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1698,7 +1494,7 @@ Datenschutzbestimmungen apps/client/src/app/app.component.html - 90 + 100 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1710,7 +1506,7 @@ Blog apps/client/src/app/app.component.html - 68 + 70 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -1718,15 +1514,15 @@ apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html @@ -1734,7 +1530,7 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + 196 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html @@ -1758,7 +1554,7 @@ apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + 253 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1798,7 +1594,7 @@ Changelog apps/client/src/app/app.component.html - 71 + 74 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1810,7 +1606,7 @@ Lizenz apps/client/src/app/app.component.html - 80 + 85 apps/client/src/app/pages/about/license/license-page.html @@ -1842,7 +1638,7 @@ Bitte gebe deinen Gutscheincode ein: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 + 118 @@ -1850,7 +1646,7 @@ Gutscheincode konnte nicht eingelöst werden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 + 128 @@ -1858,7 +1654,7 @@ Gutscheincode wurde eingelöst apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + 140 @@ -1866,7 +1662,7 @@ Neu laden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 + 141 @@ -1874,7 +1670,7 @@ Möchtest du diese Anmeldemethode wirklich löschen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 + 252 @@ -1882,7 +1678,7 @@ Konto apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 + 85 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1902,11 +1698,11 @@ pro Jahr apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 33 apps/client/src/app/pages/pricing/pricing-page.html - 254 + 257 @@ -1914,7 +1710,7 @@ Premium ausprobieren apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 + 40 @@ -1922,7 +1718,7 @@ Gutschein einlösen apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + 54 @@ -1946,7 +1742,7 @@ Lokalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 + 123 @@ -1954,7 +1750,7 @@ Datums- und Zahlenformat apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 125 @@ -1962,11 +1758,11 @@ Zen Modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 + 173 apps/client/src/app/pages/features/features-page.html - 190 + 191 @@ -1974,7 +1770,7 @@ Einloggen mit Fingerabdruck apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 + 191 @@ -1986,7 +1782,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 + 224 @@ -2042,7 +1838,7 @@ Bargeld apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 + 226 @@ -2050,15 +1846,15 @@ Währung apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + 65 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + 132 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + 235 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2066,7 +1862,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + 144 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2082,7 +1878,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + 136 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2098,7 +1894,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + 86 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2218,7 +2014,7 @@ Nach Konto apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 + 286 @@ -2234,7 +2030,7 @@ Nach Anlageklasse apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 + 85 @@ -2242,7 +2038,7 @@ Nach Position apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 + 107 @@ -2250,7 +2046,7 @@ Nach Sektor apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 + 130 @@ -2258,7 +2054,7 @@ Nach Kontinent apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 + 153 @@ -2266,7 +2062,7 @@ Nach Land apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 + 264 @@ -2274,11 +2070,11 @@ Regionen apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 + 198 apps/client/src/app/pages/public/public-page.html - 76 + 87 @@ -2306,7 +2102,7 @@ Zeitstrahl der Investitionen apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 + 296 @@ -2314,7 +2110,7 @@ Gewinner apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 166 @@ -2322,7 +2118,7 @@ Verlierer apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 + 215 @@ -2354,7 +2150,7 @@ 4% Regel apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 + 40 @@ -2402,7 +2198,7 @@ Aktivität bearbeiten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 + 10 @@ -2410,7 +2206,7 @@ Aktivität hinzufügen apps/client/src/app/components/home-overview/home-overview.html - 56 + 52 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2422,7 +2218,7 @@ Verkauf libs/ui/src/lib/i18n.ts - 37 + 40 @@ -2430,11 +2226,11 @@ Name, Symbol oder ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 26 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + 124 @@ -2442,11 +2238,11 @@ Anzahl apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 + 156 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 + 188 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2458,11 +2254,11 @@ Stückpreis apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 + 286 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2474,11 +2270,11 @@ Gebühr apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 306 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 330 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2490,7 +2286,7 @@ Kommentar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + 365 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2498,7 +2294,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + 339 @@ -2506,23 +2302,23 @@ Anlageklasse apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + 86 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + 161 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + 245 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + 232 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + 354 @@ -2572,13 +2368,17 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts 41 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + Currencies Währungen apps/client/src/app/pages/public/public-page.html - 30 + 32 @@ -2586,7 +2386,7 @@ Kontinente apps/client/src/app/pages/public/public-page.html - 60 + 68 @@ -2594,7 +2394,7 @@ Ghostfolio verschafft Ihnen den Überblick über Ihr Vermögen. apps/client/src/app/pages/public/public-page.html - 148 + 159 @@ -2610,7 +2410,7 @@ Weiter mit Internet Identity apps/client/src/app/pages/register/register-page.html - 41 + 42 @@ -2618,7 +2418,7 @@ Weiter mit Google apps/client/src/app/pages/register/register-page.html - 51 + 53 @@ -2690,7 +2490,7 @@ Aktivitäten importieren apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 + 45 @@ -2738,7 +2538,7 @@ Möchtest du diese Aktivität wirklich löschen? libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + 235 @@ -2786,7 +2586,7 @@ Sprache apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 + 48 @@ -2794,7 +2594,7 @@ Registrieren apps/client/src/app/components/header/header.component.html - 411 + 404 @@ -2802,7 +2602,7 @@ Diese Funktion ist derzeit nicht verfügbar. apps/client/src/app/core/http-response.interceptor.ts - 60 + 53 @@ -2810,11 +2610,11 @@ Bitte versuche es später noch einmal. apps/client/src/app/core/http-response.interceptor.ts - 62 + 55 apps/client/src/app/core/http-response.interceptor.ts - 91 + 80 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2826,7 +2626,7 @@ Ups! Es ist etwas schief gelaufen. apps/client/src/app/core/http-response.interceptor.ts - 89 + 78 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2838,7 +2638,7 @@ Änderung apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 + 65 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -2850,7 +2650,7 @@ Ø Preis pro Einheit apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 + 103 @@ -2858,7 +2658,7 @@ Minimum Preis apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 + 130 @@ -2866,7 +2666,7 @@ Maximum Preis apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 + 146 @@ -2874,23 +2674,23 @@ Anlageunterklasse apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + 95 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + 170 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + 258 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + 241 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + 370 @@ -2898,11 +2698,11 @@ Sektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + 187 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + 258 @@ -2910,7 +2710,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + 198 apps/client/src/app/components/admin-users/admin-users.html @@ -2918,7 +2718,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + 268 @@ -2926,11 +2726,11 @@ Entwickelte Länder apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 + 222 apps/client/src/app/pages/public/public-page.html - 93 + 104 @@ -2938,11 +2738,11 @@ Schwellenländer apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 + 231 apps/client/src/app/pages/public/public-page.html - 102 + 113 @@ -2950,11 +2750,11 @@ Übrige Länder apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 + 240 apps/client/src/app/pages/public/public-page.html - 111 + 122 @@ -2978,7 +2778,7 @@ Einlage libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 + 361 @@ -2986,11 +2786,11 @@ Verzinsung libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + 371 libs/ui/src/lib/i18n.ts - 34 + 37 @@ -2998,7 +2798,7 @@ Ersparnisse libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 381 @@ -3006,7 +2806,7 @@ Anzahl Länder apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + 140 @@ -3014,7 +2814,7 @@ Anzahl Sektoren apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + 131 @@ -3022,11 +2822,11 @@ Angst apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts - 71 + 96 @@ -3034,11 +2834,11 @@ Gier apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts - 72 + 97 @@ -3046,7 +2846,7 @@ Filtern nach... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + 328 @@ -3054,7 +2854,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 3 + 4 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -3074,7 +2874,7 @@ Experimentelle Funktionen apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 + 207 @@ -3082,7 +2882,7 @@ Vergleichen mit... apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 + 18 @@ -3106,7 +2906,7 @@ Von der Analyse ausgenommen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 + 264 @@ -3114,7 +2914,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 + 38 @@ -3122,7 +2922,7 @@ Aussehen apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 + 148 @@ -3130,7 +2930,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 + 162 @@ -3138,7 +2938,7 @@ Hell apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 + 163 @@ -3146,7 +2946,7 @@ Dunkel apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 164 @@ -3154,7 +2954,7 @@ Gesamtbetrag apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 + 141 @@ -3162,7 +2962,7 @@ Portfolio Wertentwicklung apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 268 @@ -3170,7 +2970,7 @@ Sparrate apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 + 213 @@ -3194,7 +2994,7 @@ Symbol libs/ui/src/lib/i18n.ts - 25 + 27 @@ -3202,7 +3002,7 @@ Tag libs/ui/src/lib/i18n.ts - 26 + 28 @@ -3210,7 +3010,7 @@ Bargeld libs/ui/src/lib/i18n.ts - 40 + 43 @@ -3218,7 +3018,7 @@ Rohstoff libs/ui/src/lib/i18n.ts - 41 + 44 @@ -3226,7 +3026,7 @@ Beteiligungskapital libs/ui/src/lib/i18n.ts - 42 + 45 @@ -3234,7 +3034,7 @@ Feste Einkünfte libs/ui/src/lib/i18n.ts - 43 + 46 @@ -3242,7 +3042,7 @@ Immobilien libs/ui/src/lib/i18n.ts - 45 + 48 @@ -3250,7 +3050,7 @@ Anleihe libs/ui/src/lib/i18n.ts - 48 + 51 @@ -3258,7 +3058,7 @@ Kryptowährung libs/ui/src/lib/i18n.ts - 49 + 52 @@ -3266,7 +3066,7 @@ ETF libs/ui/src/lib/i18n.ts - 50 + 53 @@ -3274,7 +3074,7 @@ Investmentfonds libs/ui/src/lib/i18n.ts - 51 + 54 @@ -3282,7 +3082,7 @@ Edelmetall libs/ui/src/lib/i18n.ts - 52 + 55 @@ -3290,7 +3090,7 @@ Privates Beteiligungskapital libs/ui/src/lib/i18n.ts - 53 + 56 @@ -3298,7 +3098,7 @@ Aktie libs/ui/src/lib/i18n.ts - 54 + 57 @@ -3306,7 +3106,7 @@ Notfallfonds libs/ui/src/lib/i18n.ts - 13 + 15 @@ -3314,11 +3114,11 @@ Andere libs/ui/src/lib/i18n.ts - 21 + 23 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + 403 @@ -3326,11 +3126,11 @@ Keine Daten verfügbar libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + 405 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + 418 @@ -3338,7 +3138,7 @@ Nordamerika libs/ui/src/lib/i18n.ts - 64 + 67 @@ -3346,7 +3146,7 @@ Afrika libs/ui/src/lib/i18n.ts - 61 + 64 @@ -3354,7 +3154,7 @@ Asien libs/ui/src/lib/i18n.ts - 62 + 65 @@ -3362,7 +3162,7 @@ Europa libs/ui/src/lib/i18n.ts - 63 + 66 @@ -3370,7 +3170,7 @@ Ozeanien libs/ui/src/lib/i18n.ts - 65 + 68 @@ -3378,7 +3178,7 @@ Südamerika libs/ui/src/lib/i18n.ts - 66 + 69 @@ -3386,7 +3186,7 @@ Folgende Dateiformate werden unterstützt: apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 + 90 @@ -3394,11 +3194,11 @@ Zurück apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 + 144 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 + 178 @@ -3406,43 +3206,47 @@ Community apps/client/src/app/app.component.html - 105 + 118 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 77 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 83 apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 88 apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + 92 apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + 96 apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + 100 apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + 105 apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + 110 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 apps/client/src/app/pages/features/features-page.html - 256 + 259 @@ -3450,7 +3254,7 @@ Anzahl Aktivitäten apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 113 @@ -3466,7 +3270,7 @@ Symbol Zuordnung apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + 292 @@ -3474,7 +3278,7 @@ Zeitstrahl der Dividenden apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 + 354 @@ -3486,7 +3290,7 @@ libs/ui/src/lib/i18n.ts - 32 + 35 @@ -3510,7 +3314,7 @@ Daten validieren... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 + 234 @@ -3518,15 +3322,15 @@ Importieren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 + 110 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 + 153 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 + 186 @@ -3570,7 +3374,7 @@ Position apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 + 32 @@ -3578,7 +3382,7 @@ Dividenden laden apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 + 68 @@ -3610,7 +3414,7 @@ Kern libs/ui/src/lib/i18n.ts - 9 + 10 @@ -3618,7 +3422,7 @@ Zuwendung libs/ui/src/lib/i18n.ts - 14 + 17 @@ -3626,7 +3430,7 @@ Höheres Risiko libs/ui/src/lib/i18n.ts - 15 + 18 @@ -3634,7 +3438,7 @@ Geringeres Risiko libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3642,7 +3446,7 @@ Altersvorsorge libs/ui/src/lib/i18n.ts - 23 + 25 @@ -3650,7 +3454,7 @@ Satellit libs/ui/src/lib/i18n.ts - 24 + 26 @@ -3666,7 +3470,7 @@ Unbeschwertes Erlebnis für turbulente Zeiten apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + 174 @@ -3674,7 +3478,7 @@ Vorschau auf kommende Funktionalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 208 @@ -3694,11 +3498,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 55 + 57 apps/client/src/app/pages/pricing/pricing-page.html - 199 + 203 @@ -3710,11 +3514,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 63 + 65 apps/client/src/app/pages/pricing/pricing-page.html - 207 + 211 @@ -3726,11 +3530,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 67 + 69 apps/client/src/app/pages/pricing/pricing-page.html - 211 + 215 @@ -3742,11 +3546,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 83 + 85 apps/client/src/app/pages/pricing/pricing-page.html - 231 + 235 @@ -3762,7 +3566,7 @@ Abonnement abschliessen apps/client/src/app/components/header/header.component.html - 182 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3770,11 +3574,11 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + 16 apps/client/src/app/pages/pricing/pricing-page.html - 268 + 271 @@ -3782,7 +3586,7 @@ Für technisch versierte Anleger, die Ghostfolio auf der eigenen Infrastruktur betreiben möchten. apps/client/src/app/pages/pricing/pricing-page.html - 36 + 38 @@ -3790,15 +3594,15 @@ Unlimitierte Transaktionen apps/client/src/app/pages/pricing/pricing-page.html - 43 + 45 apps/client/src/app/pages/pricing/pricing-page.html - 126 + 129 apps/client/src/app/pages/pricing/pricing-page.html - 187 + 191 @@ -3806,15 +3610,15 @@ Unlimitierte Accounts apps/client/src/app/pages/pricing/pricing-page.html - 47 + 49 apps/client/src/app/pages/pricing/pricing-page.html - 130 + 133 apps/client/src/app/pages/pricing/pricing-page.html - 191 + 195 @@ -3822,15 +3626,15 @@ Portfolio Performance apps/client/src/app/pages/pricing/pricing-page.html - 51 + 53 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 137 apps/client/src/app/pages/pricing/pricing-page.html - 195 + 199 @@ -3838,7 +3642,7 @@ Selbst gehostet, manuelles Update. apps/client/src/app/pages/pricing/pricing-page.html - 92 + 94 @@ -3846,11 +3650,11 @@ Kostenlos apps/client/src/app/pages/pricing/pricing-page.html - 93 + 95 apps/client/src/app/pages/pricing/pricing-page.html - 150 + 153 @@ -3858,7 +3662,7 @@ Für Einsteiger, die gerade mit dem Börsenhandel beginnen. apps/client/src/app/pages/pricing/pricing-page.html - 120 + 123 @@ -3866,11 +3670,11 @@ Vollständig verwaltetes Ghostfolio Cloud-Angebot. apps/client/src/app/pages/pricing/pricing-page.html - 149 + 152 apps/client/src/app/pages/pricing/pricing-page.html - 240 + 244 @@ -3878,7 +3682,7 @@ Für ambitionierte Anleger, die den vollständigen Überblick über ihr Anlagevermögen benötigen. apps/client/src/app/pages/pricing/pricing-page.html - 180 + 184 @@ -3889,12 +3693,12 @@ 280 - + Get Started Jetzt loslegen - apps/client/src/app/pages/pricing/pricing-page.html - 291 + apps/client/src/app/pages/landing/landing-page.html + 446 @@ -3902,7 +3706,7 @@ Es ist kostenlos. apps/client/src/app/pages/pricing/pricing-page.html - 294 + 301 @@ -3910,7 +3714,7 @@ Gebühren apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 + 203 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3918,7 +3722,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 + 176 @@ -3930,15 +3734,15 @@ apps/client/src/app/pages/features/features-page.html - 160 + 161 apps/client/src/app/pages/pricing/pricing-page.html - 59 + 61 apps/client/src/app/pages/pricing/pricing-page.html - 203 + 207 @@ -3954,15 +3758,15 @@ Datenimport und -export apps/client/src/app/pages/pricing/pricing-page.html - 71 + 73 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 141 apps/client/src/app/pages/pricing/pricing-page.html - 215 + 219 @@ -3970,7 +3774,7 @@ Einfacher Wechsel zu Ghostfolio Premium libs/ui/src/lib/i18n.ts - 11 + 13 @@ -3978,7 +3782,7 @@ Community Support apps/client/src/app/pages/pricing/pricing-page.html - 88 + 90 @@ -3986,7 +3790,7 @@ E-Mail und Chat Support apps/client/src/app/pages/pricing/pricing-page.html - 236 + 240 @@ -3994,7 +3798,7 @@ Einfacher Wechsel zu Ghostfolio Premium oder Ghostfolio Open Source libs/ui/src/lib/i18n.ts - 10 + 12 @@ -4002,7 +3806,7 @@ Einfacher Wechsel zu Ghostfolio Open Source oder Ghostfolio Basic libs/ui/src/lib/i18n.ts - 12 + 14 @@ -4013,12 +3817,12 @@ 2 - + Oops! Could not get the historical exchange rate from Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 + 240 @@ -4046,7 +3850,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 226 + 230 @@ -4062,11 +3866,11 @@ Abonnement erneuern apps/client/src/app/components/header/header.component.html - 190 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 + 21 apps/client/src/app/pages/pricing/pricing-page.html @@ -4086,7 +3890,7 @@ Benutzer verwenden apps/client/src/app/components/admin-users/admin-users.html - 222 + 218 @@ -4094,7 +3898,7 @@ Benutzer löschen apps/client/src/app/components/admin-users/admin-users.html - 232 + 229 @@ -4102,7 +3906,7 @@ Möchtest du diese Aktivitäten wirklich löschen? libs/ui/src/lib/activities-table/activities-table.component.ts - 216 + 225 @@ -4110,7 +3914,7 @@ Nach ETF-Anbieter apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 + 306 @@ -4118,7 +3922,7 @@ Plattform bearbeiten apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 + 8 @@ -4126,7 +3930,7 @@ Plattform hinzufügen apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + 10 @@ -4134,15 +3938,15 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 + 352 apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 + 51 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + 25 @@ -4150,7 +3954,7 @@ Möchtest du diese Plattform wirklich löschen? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 + 86 @@ -4166,7 +3970,7 @@ Cash-Bestand aktualisieren apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 + 112 @@ -4234,7 +4038,7 @@ Diese Aktivität existiert bereits. libs/ui/src/lib/i18n.ts - 16 + 19 @@ -4242,7 +4046,7 @@ Benchmarks verwalten apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 + 35 @@ -4258,7 +4062,7 @@ Datei auswählen apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 + 22 @@ -4266,7 +4070,7 @@ Dividenden auswählen apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + 113 @@ -4274,7 +4078,7 @@ Aktivitäten auswählen apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 + 115 @@ -4306,7 +4110,7 @@ Private Finanzen apps/client/src/app/app.component.html - 55 + 54 @@ -4314,7 +4118,7 @@ Häufig gestellte Fragen (FAQ) apps/client/src/app/app.component.html - 76 + 80 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -4326,7 +4130,7 @@ Aktueller Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 + 317 @@ -4334,7 +4138,7 @@ Längster Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 + 326 @@ -4342,7 +4146,7 @@ Monate libs/ui/src/lib/i18n.ts - 20 + 22 @@ -4350,7 +4154,7 @@ Jahre libs/ui/src/lib/i18n.ts - 28 + 30 @@ -4358,7 +4162,7 @@ Monat libs/ui/src/lib/i18n.ts - 19 + 21 @@ -4366,7 +4170,7 @@ Jahr libs/ui/src/lib/i18n.ts - 27 + 29 @@ -4374,7 +4178,7 @@ Verbindlichkeiten apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 + 279 apps/client/src/app/pages/features/features-page.html @@ -4474,7 +4278,7 @@ Dark Mode apps/client/src/app/pages/features/features-page.html - 177 + 178 @@ -4482,7 +4286,7 @@ Marktstimmung apps/client/src/app/pages/features/features-page.html - 205 + 206 @@ -4490,7 +4294,7 @@ Statische Analyse apps/client/src/app/pages/features/features-page.html - 224 + 225 @@ -4498,7 +4302,7 @@ Mehrsprachigkeit apps/client/src/app/pages/features/features-page.html - 241 + 242 @@ -4506,7 +4310,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 275 + 278 @@ -4514,7 +4318,7 @@ Verbindlichkeit libs/ui/src/lib/i18n.ts - 36 + 39 @@ -4522,7 +4326,7 @@ Scraper Konfiguration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + 304 @@ -4553,11024 +4357,2664 @@ Founded Gegründet - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 72 + + + Origin + Ursprung - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region + Region - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in + Verfügbar in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes + ✅ Ja - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No + ❌ Nein - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No + ❌ Nein - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously + Anonyme Nutzung - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan + Kostenlose Nutzung - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Notes + Hinweise - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Mit Ghostfolio kannst du dein Vermögen einfach überwachen, analysieren und visualisieren. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Personal Finance Tools + Tools für persönliche Finanzen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Guides + Ratgeber - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 22 + + + Glossary + Lexikon - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Aktien, ETFs, Anleihen, Kryptowährungen, Rohstoffe - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + Mortgages, personal loans, credit cards + Hypotheken, Darlehen, Kreditkarten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + Luxury items, real estate, private companies + Luxusartikel, Immobilien, private Unternehmen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Buy + Kauf - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 34 + + + Valuable + Wertsache - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 38 + + + ETFs without Countries + ETFs ohne Länder - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + ETFs without Sectors + ETFs ohne Sektoren - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 + + + Assets + Anlagevermögen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + Preset + Filtervorlage - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 24 + + + By Market + Nach Markt - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Asia-Pacific + Asien-Pazifik - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 5 + + + Japan + Japan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 83 + + + Welcome to Ghostfolio + Herzlich willkommen bei Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Setup your accounts + Konten einrichten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Verschaffe dir einen umfassenden Überblick, indem du deine Bank- und Wertpapierkonten hinzufügst. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + Aktivitäten erfassen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Erfasse deine Investitionsaktivitäten, um dein Portfolio auf dem neuesten Stand zu halten. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Portfolio überwachen und analysieren - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Verfolge die Entwicklung in Echtzeit mit umfassenden Analysen und Einblicken. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + No data available + Keine Daten verfügbar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Ready to take control of your personal finances? + Bist du bereit, die Kontrolle über deine Finanzen zu übernehmen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + Setup accounts + Konten einrichten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 44 - - Origin - Ursprung + + Biometric Authentication + Biometrische Authentifizierung - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + Bei Ghostfolio gehört Transparenz zum zentralen Inhalt unserer Grundwerte. Wir publizieren den Quellcode als Open-Source-Software (OSS) unter der AGPL-3.0-Lizenz und veröffentlichen aggregierte Kennzahlen über den Betriebsstatus der Plattform. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 6 + + + Active Users + Aktive Nutzer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 62 + + + New Users + Neue Nutzer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 51 + + + Users in Slack community + Nutzer in der Slack Community - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 75 + + + Contributors on GitHub + Contributors auf GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 89 + + + Stars on GitHub + Sterne auf GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 103 + + + Pulls on Docker Hub + Downloads auf Docker Hub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 106 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 117 + + + Uptime + Verfügbarkeit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 132 + + + Export Data + Daten exportieren - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 + + + Currencies + Währungen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 + + + Our + Unsere - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + Visit + Besuche - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + Discover other exciting Open Source Software projects + Entdecke weitere interessante Open Source Software Projekte - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + Frequently Asked Questions (FAQ) + Häufig gestellte Fragen (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 + + + Check out the numerous features of Ghostfolio to manage your wealth + Entdecke die zahlreichen Funktionen von Ghostfolio zur Vermögensverwaltung - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/features/features-page.html + 6 + + + Discover the latest Ghostfolio updates and insights on personal finance + Entdecke die neuesten Ghostfolio Updates und Beiträge zu persönlichen Finanzen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Wenn du Ghostfolio lieber auf deiner eigenen Infrastruktur betreiben möchtest, findest du den Quellcode und weitere Informationen auf GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + Manage your wealth like a boss + Verwalte dein Vermögen wie ein Profi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio ist ein Open Source Dashboard für deine persönlichen Finanzen mit Fokus auf Datenschutz. Analysiere deine Vermögensverteilung, ermittle dein Nettovermögen und treffe fundierte, datengestützte Investitionsentscheidungen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started + Jetzt loslegen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Monthly Active Users + Monatlich aktive Nutzer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 70 + + + As seen in + Bekannt aus - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + Schützen Sie Ihr Vermögen. Optimieren Sie Ihre persönliche Anlagestrategie. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio ermöglicht es geschäftigen Leuten, den Überblick über Aktien, ETFs oder Kryptowährungen zu behalten, ohne überwacht zu werden. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 229 + + + 360° View + 360° Ansicht - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Web3 Ready + Web3 ready - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + Nutze Ghostfolio ganz anonym und behalte deine Finanzdaten. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source + Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. + Profitiere von kontinuierlichen Verbesserungen durch eine aktive Community. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + Warum Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 272 + + + Ghostfolio is for you if you are... + Ghostfolio ist für dich geeignet, wenn du... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + Aktien, ETFs oder Kryptowährungen auf unterschiedlichen Plattformen handelst - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy + eine Buy & Hold Strategie verfolgst - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition + dich für die Zusammensetzung deines Portfolios interessierst - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership + Privatsphäre und Datenhoheit wertschätzt - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism + zum Frugalismus oder Minimalismus neigst - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 299 + + + caring about diversifying your financial resources + dich um die Diversifizierung deiner finanziellen Mittel kümmerst - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence + Interesse an finanzieller Freiheit hast - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - - Region - Region - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - Verfügbar in - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ Ja - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ Nein - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ Nein - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - Self-Hosting - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - Anonyme Nutzung - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - Kostenlose Nutzung - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Notes - Hinweise - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Mit Ghostfolio kannst du dein Vermögen einfach überwachen, analysieren und visualisieren. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - - Personal Finance Tools - Tools für persönliche Finanzen - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - - Guides - Ratgeber - - apps/client/src/app/pages/resources/resources-page.html - 22 - - - - Glossary - Lexikon - - apps/client/src/app/pages/resources/resources-page.html - 92 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Aktien, ETFs, Anleihen, Kryptowährungen, Rohstoffe - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - Mortgages, personal loans, credit cards - Hypotheken, Darlehen, Kreditkarten - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - Luxusartikel, Immobilien, private Unternehmen - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Buy - Kauf - - libs/ui/src/lib/i18n.ts - 31 - - - - Valuable - Wertsache - - libs/ui/src/lib/i18n.ts - 35 - - - - ETFs without Countries - ETFs ohne Länder - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 - - - - ETFs without Sectors - ETFs ohne Sektoren - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 - - - - Assets - Anlagevermögen - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 - - - - Preset - Filtervorlage - - libs/ui/src/lib/i18n.ts - 22 - - - - By Market - Nach Markt - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Asia-Pacific - Asien-Pazifik - - libs/ui/src/lib/i18n.ts - 5 - - - - Japan - Japan - - libs/ui/src/lib/i18n.ts - 17 - - - - Welcome to Ghostfolio - Herzlich willkommen bei Ghostfolio - - apps/client/src/app/components/home-overview/home-overview.html - 7 - - - - Setup your accounts - Konten einrichten - - apps/client/src/app/components/home-overview/home-overview.html - 15 - - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Verschaffe dir einen umfassenden Überblick, indem du deine Bank- und Wertpapierkonten hinzufügst. - - apps/client/src/app/components/home-overview/home-overview.html - 17 - - - - Capture your activities - Aktivitäten erfassen - - apps/client/src/app/components/home-overview/home-overview.html - 24 - - - - Record your investment activities to keep your portfolio up to date. - Erfasse deine Investitionsaktivitäten, um dein Portfolio auf dem neuesten Stand zu halten. - - apps/client/src/app/components/home-overview/home-overview.html - 26 - - - - Monitor and analyze your portfolio - Portfolio überwachen und analysieren - - apps/client/src/app/components/home-overview/home-overview.html - 33 - - - - Track your progress in real-time with comprehensive analysis and insights. - Verfolge die Entwicklung in Echtzeit mit umfassenden Analysen und Einblicken. - - apps/client/src/app/components/home-overview/home-overview.html - 35 - - - - No data available - Keine Daten verfügbar - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - Ready to take control of your personal finances? - Bist du bereit, die Kontrolle über deine Finanzen zu übernehmen? - - apps/client/src/app/components/home-overview/home-overview.html - 8 - - - - Setup accounts - Konten einrichten - - apps/client/src/app/components/home-overview/home-overview.html - 48 - - - - Biometric Authentication - Biometrische Authentifizierung - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - Bei Ghostfolio gehört Transparenz zum zentralen Inhalt unserer Grundwerte. Wir publizieren den Quellcode als Open-Source-Software (OSS) unter der AGPL-3.0-Lizenz und veröffentlichen aggregierte Kennzahlen über den Betriebsstatus der Plattform. - - apps/client/src/app/pages/open/open-page.html - 6 - - - - Active Users - Aktive Nutzer - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - New Users - Neue Nutzer - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Nutzer in der Slack Community - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - Contributors auf GitHub - - apps/client/src/app/pages/open/open-page.html - 89 - - - - Stars on GitHub - Sterne auf GitHub - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - Downloads auf Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - Uptime - Verfügbarkeit - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Export Data - Daten exportieren - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - Currencies - Währungen - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 - - - - Our - Unsere - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Visit - Besuche - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Discover other exciting Open Source Software projects - Entdecke weitere interessante Open Source Software Projekte - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Frequently Asked Questions (FAQ) - Häufig gestellte Fragen (FAQ) - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Check out the numerous features of Ghostfolio to manage your wealth - Entdecke die zahlreichen Funktionen von Ghostfolio zur Vermögensverwaltung - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Discover the latest Ghostfolio updates and insights on personal finance - Entdecke die neuesten Ghostfolio Updates und Beiträge zu persönlichen Finanzen - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - Wenn du Ghostfolio lieber auf deiner eigenen Infrastruktur betreiben möchtest, findest du den Quellcode und weitere Informationen auf GitHub. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - Manage your wealth like a boss - Verwalte dein Vermögen wie ein Profi - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio ist ein Open Source Dashboard für deine persönlichen Finanzen mit Fokus auf Datenschutz. Analysiere deine Vermögensverteilung, ermittle dein Nettovermögen und treffe fundierte, datengestützte Investitionsentscheidungen. - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - Jetzt loslegen - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - oder - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Monthly Active Users - Monatlich aktive Nutzer - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - As seen in - Bekannt aus - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - Schützen Sie Ihr Vermögen. Optimieren Sie Ihre persönliche Anlagestrategie. - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio ermöglicht es geschäftigen Leuten, den Überblick über Aktien, ETFs oder Kryptowährungen zu behalten, ohne überwacht zu werden. - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - 360° Ansicht - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Web3 Ready - Web3 ready - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - Nutze Ghostfolio ganz anonym und behalte deine Finanzdaten. - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - Open Source - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - Profitiere von kontinuierlichen Verbesserungen durch eine aktive Community. - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - Warum Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - Ghostfolio ist für dich geeignet, wenn du... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - Aktien, ETFs oder Kryptowährungen auf unterschiedlichen Plattformen handelst - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - eine Buy & Hold Strategie verfolgst - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - dich für die Zusammensetzung deines Portfolios interessierst - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - Privatsphäre und Datenhoheit wertschätzt - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - zum Frugalismus oder Minimalismus neigst - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - dich um die Diversifizierung deiner finanziellen Mittel kümmerst - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - Interesse an finanzieller Freiheit hast - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - Nein sagst zu Excel-Tabellen im Jahr - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - diese Liste bis zum Ende liest - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - Erfahre mehr über Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - Was unsere Nutzer sagen - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - Nutzer aus aller Welt verwenden Ghostfolio Premium - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - Wie funktioniert Ghostfolio ? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Sign up anonymously* - Registriere dich anonym* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - * Keine E-Mail-Adresse oder Kreditkarte erforderlich - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - Füge historische Transaktionen hinzu - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - Erhalte nützliche Erkenntnisse über die Zusammensetzung deines Portfolios - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - Bist du bereit? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - Melde dich jetzt an oder probiere die Live Demo aus - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - Live Demo - Live Demo - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Get the full picture of your personal finances across multiple platforms. - Verschaffe dir einen vollständigen Überblick deiner persönlichen Finanzen über mehrere Plattformen hinweg. - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Get started in only 3 steps - Beginne mit nur 3 Schritten - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - faq - haeufig-gestellte-fragen - - apps/client/src/app/app.component.ts - 66 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 37 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 42 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 48 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 17 - - - - features - features - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/components/header/header.component.ts - 78 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 - - - - about - ueber-uns - - apps/client/src/app/app.component.ts - 59 - - - apps/client/src/app/app.component.ts - 60 - - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/app.component.ts - 63 - - - apps/client/src/app/components/header/header.component.ts - 77 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 - - - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - apps/client/src/app/pages/about/about-page.component.ts - 74 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 - - - - privacy-policy - datenschutzbestimmungen - - apps/client/src/app/app.component.ts - 64 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - - license - lizenz - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - - markets - maerkte - - apps/client/src/app/app.component.ts - 68 - - - apps/client/src/app/components/header/header.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 - - - - pricing - preise - - apps/client/src/app/app.component.ts - 69 - - - apps/client/src/app/components/header/header.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 - - - apps/client/src/app/core/http-response.interceptor.ts - 83 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 - - - - register - registrierung - - apps/client/src/app/app.component.ts - 70 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 - - - apps/client/src/app/pages/features/features-page.component.ts - 31 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 - - - - resources - ressourcen - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/components/header/header.component.ts - 81 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/features/features-page.component.ts - 32 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 19 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Diese Übersichtsseite zeigt eine Auswahl an Tools zur Verwaltung der persönliche Finanzen im Vergleich zur Open Source Alternative Ghostfolio. Wenn du Wert auf Transparenz, Datenschutz und die gemeinschaftliche Zusammenarbeit der Open Source Community legst, bietet dir Ghostfolio eine ausgezeichnete Möglichkeit, die Kontrolle über dein Finanzmanagement zu übernehmen. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Über die Links unten kannst du eine Reihe an Tools mit Ghostfolio vergleichen. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Open Source Alternative zu - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - Open Source Alternative to - Open Source Alternative zu - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - The Open Source Alternative to - Die Open Source Alternative zu - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Suchst du nach einer Open Source Alternative zu ? Ghostfolio ist ein leistungsstarkes Portfolio Management Tool, das Privatpersonen eine umfassende Plattform bietet, um ihre Investitionen zu verfolgen, zu analysieren und zu optimieren. Egal, ob du ein erfahrener Investor bist oder gerade erst anfängst, Ghostfolio bietet eine intuitive Benutzeroberfläche und eine Vielzahl an Funktionen, die dir dabei helfen, fundierte Entscheidungen zu treffen und die Kontrolle über deine finanzielle Zukunft zu übernehmen. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio ist eine Open Source Software (OSS), die eine kostengünstige Alternative zu darstellt und sich besonders für Personen mit knappem Budget eignet, wie z.B. für diejenigen, die finanzielle Unabhängigkeit und einen frühen Ruhestand anstreben (FIRE). Ghostfolio nutzt die gemeinsamen Aktivitäten einer Community von Entwicklern und Finanzenthusiasten, um seine Funktionalität, Sicherheit und Benutzerfreundlichkeit kontinuierlich zu verbessern. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Wir möchten uns in der untenstehenden Ghostfolio vs Vergleichstabelle ein detailliertes Bild davon machen, wie Ghostfolio im Vergleich zu positioniert ist. Wir werden dabei verschiedene Aspekte wie Funktionen, Datenschutz, Preise und weiteres untersuchen, damit du eine gut informierte Entscheidung für deine persönlichen Anforderungen treffen kannst. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - open-source-alternative-to - open-source-alternative-zu - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - - Ready to take your investments to the next level? - Bereit, deine Investitionen auf ein neues Levelzu bringen? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - - Get Started - Jetzt loslegen - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - - Switzerland - Schweiz - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 - - - - Global - Weltweit - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 - - - - United States - Vereinigte Staaten von Amerika - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 - - - - Belgium - Belgien - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 - - - - Germany - Deutschland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 - - - - Austria - Österreich - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 - - - - Italy - Italien - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 - - - - Netherlands - Niederlande - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 - - - - Thailand - Thailand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 - - - - New Zealand - Neuseeland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 - - - - Czech Republic - Tschechische Republik - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 - - - - (Last 24 hours) - (Letzte 24 Stunden) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - (Last 30 days) - (Letzte 30 Tage) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - (Last 90 days) - (Letzte 90 Tage) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Choose or drop a file here - Wählen Sie eine Datei aus oder ziehen Sie sie hierhin - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - You are using the Live Demo. - Du verwendest die Live Demo. - - apps/client/src/app/app.component.html - 17 - - - - One-time fee, annual account fees - Einmalige Eröffnungsgebühr, jährliche Kontoführungsgebühren - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - Ausschüttung von Unternehmensgewinnen - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Oops! Could not get the historical exchange rate from - Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - Gebühr - - libs/ui/src/lib/i18n.ts - 33 - - - - Interest - Zins - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - Revenue for lending out money - Ertrag für das Ausleihen von Geld - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Add Tag - Tag hinzufügen - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - Möchtest du diesen Tag wirklich löschen? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - Tag bearbeiten - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - Tag hinzufügen - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - France - Frankreich - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray nutzt statische Analysen, um potenzielle Probleme und Risiken in deinem Portfolio zu identifizieren. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - Währungsklumpenrisiken - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - Kontoklumpenrisiken - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Transfer Cash Balance - Cash-Bestand Transfer - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Benchmark - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 - - - - Version - Version - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - Settings - Einstellungen - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - From - Von - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - Nach - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 - - - - Transfer - Transferieren - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 - - - - Finland - Finnland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 - - - - Membership - Mitgliedschaft - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 - - - - Access - Zugang - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 - - - - Find holding... - Finde Position... - - libs/ui/src/lib/assistant/assistant.component.ts - 138 - - - - No entries... - Keine Einträge vorhanden... - - libs/ui/src/lib/assistant/assistant.html - 63 - - - libs/ui/src/lib/assistant/assistant.html - 84 - - - - Asset Profile - Anlageprofil - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 - - - - Do you really want to delete this asset profile? - Möchtest du dieses Anlageprofil wirklich löschen? - - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 - - - - Search - Suche - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Add Manually - Manuell hinzufügen - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Mit dem Finanz-Dashboard Ghostfolio können Sie Ihr Vermögen in Cash, Aktien, ETFs und Kryptowährungen über mehrere Finanzinstitute überwachen. - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - Last All Time High - Letztes Allzeithoch - - libs/ui/src/lib/benchmark/benchmark.component.html - 65 - - - - User - Benutzer - - apps/client/src/app/components/admin-users/admin-users.html - 29 - - - - Ghostfolio vs comparison table - Ghostfolio vs Vergleichstabelle - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in + Nein sagst zu Excel-Tabellen im Jahr - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list + diese Liste bis zum Ende liest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio + Erfahre mehr über Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 319 + + + What our users are saying + Was unsere Nutzer sagen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + Nutzer aus aller Welt verwenden Ghostfolio Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + Wie funktioniert Ghostfolio ? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Sign up anonymously* + Registriere dich anonym* - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 392 + + + * no e-mail address nor credit card required + * Keine E-Mail-Adresse oder Kreditkarte erforderlich - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 394 - - Canada - Kanada + + Add any of your historical transactions + Füge historische Transaktionen hinzu - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 + apps/client/src/app/pages/landing/landing-page.html + 405 - - Open Source Wealth Management Software - Open Source Software für die Vermögensverwaltung + + Get valuable insights of your portfolio composition + Erhalte nützliche Erkenntnisse über die Zusammensetzung deines Portfolios - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/landing/landing-page.html + 417 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - aktie, app, asset, dashboard, etf, finanzen, kryptowährung, management, performance, portfolio, software, trading, vermögen, web3 + + Are you ready? + Bist du bereit? - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/landing/landing-page.html + 431 - - Oops, cash balance transfer has failed. - Ups, der Cash-Bestand Transfer ist fehlgeschlagen. + + Live Demo + Live Demo - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 + apps/client/src/app/pages/landing/landing-page.html + 49 - - - Poland - Polen - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + apps/client/src/app/pages/landing/landing-page.html + 451 - - South Africa - Südafrika + + Get the full picture of your personal finances across multiple platforms. + Verschaffe dir einen vollständigen Überblick deiner persönlichen Finanzen über mehrere Plattformen hinweg. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 + apps/client/src/app/pages/landing/landing-page.html + 242 - - Extreme Fear - Extreme Angst + + Get started in only 3 steps + Beginne mit nur 3 Schritten - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/landing/landing-page.html + 386 - - Extreme Greed - Extreme Gier + + faq + haeufig-gestellte-fragen - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/app.component.ts + 67 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/core/paths.ts + 3 - - - Oops! Could not parse historical data. - Ups! Die historischen Daten konnten nicht geparsed werden. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - - - Do you really want to delete this system message? - Möchtest du diese Systemmeldung wirklich löschen? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - - - 50-Day Trend - 50 Tage Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - - - 200-Day Trend - 200 Tage Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - - - Cash Balances - Cash-Bestände - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 - - Starting from - Ab + + features + features - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + about + ueber-uns - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 64 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 83 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 2 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 50 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 74 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/landing/landing-page.component.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + privacy-policy + datenschutzbestimmungen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + license + lizenz - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + maerkte - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + preise - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + register + registrierung - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 71 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 + + + resources + ressourcen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 82 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Diese Übersichtsseite zeigt eine Auswahl an Tools zur Verwaltung der persönliche Finanzen im Vergleich zur Open Source Alternative Ghostfolio. Wenn du Wert auf Transparenz, Datenschutz und die gemeinschaftliche Zusammenarbeit der Open Source Community legst, bietet dir Ghostfolio eine ausgezeichnete Möglichkeit, die Kontrolle über dein Finanzmanagement zu übernehmen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Über die Links unten kannst du eine Reihe an Tools mit Ghostfolio vergleichen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Open Source Alternative zu - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Open Source Alternative zu - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + The Open Source Alternative to + Die Open Source Alternative zu - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Suchst du nach einer Open Source Alternative zu ? Ghostfolio ist ein leistungsstarkes Portfolio Management Tool, das Privatpersonen eine umfassende Plattform bietet, um ihre Investitionen zu verfolgen, zu analysieren und zu optimieren. Egal, ob du ein erfahrener Investor bist oder gerade erst anfängst, Ghostfolio bietet eine intuitive Benutzeroberfläche und eine Vielzahl an Funktionen, die dir dabei helfen, fundierte Entscheidungen zu treffen und die Kontrolle über deine finanzielle Zukunft zu übernehmen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio ist eine Open Source Software (OSS), die eine kostengünstige Alternative zu darstellt und sich besonders für Personen mit knappem Budget eignet, wie z.B. für diejenigen, die finanzielle Unabhängigkeit und einen frühen Ruhestand anstreben (FIRE). Ghostfolio nutzt die gemeinsamen Aktivitäten einer Community von Entwicklern und Finanzenthusiasten, um seine Funktionalität, Sicherheit und Benutzerfreundlichkeit kontinuierlich zu verbessern. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Wir möchten uns in der untenstehenden Ghostfolio vs Vergleichstabelle ein detailliertes Bild davon machen, wie Ghostfolio im Vergleich zu positioniert ist. Wir werden dabei verschiedene Aspekte wie Funktionen, Datenschutz, Preise und weiteres untersuchen, damit du eine gut informierte Entscheidung für deine persönlichen Anforderungen treffen kannst. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + open-source-alternative-to + open-source-alternative-zu - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? + Bereit, deine Investitionen auf ein neues Levelzu bringen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Get Started + Jetzt loslegen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Switzerland + Schweiz - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 89 + + + Global + Weltweit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 16 + + + (Last 24 hours) + (Letzte 24 Stunden) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Letzte 30 Tage) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Letzte 90 Tage) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Wählen Sie eine Datei aus oder ziehen Sie sie hierhin - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 - - year - Jahr + + You are using the Live Demo. + Du verwendest die Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + Einmalige Eröffnungsgebühr, jährliche Kontoführungsgebühren - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Ausschüttung von Unternehmensgewinnen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Oops! Could not get the historical exchange rate from + Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Fee + Gebühr - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 36 + + + Interest + Zins - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + Revenue for lending out money + Ertrag für das Ausleihen von Geld - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Tag hinzufügen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Möchtest du diesen Tag wirklich löschen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + Tag bearbeiten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Tag hinzufügen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray nutzt statische Analysen, um potenzielle Probleme und Risiken in deinem Portfolio zu identifizieren. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks + Währungsklumpenrisiken - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks + Kontoklumpenrisiken - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Transfer Cash Balance + Cash-Bestand Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Einstellungen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + Von - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + Nach - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transferieren - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Mitgliedschaft - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + Zugang - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + Find holding... + Finde Position... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + Keine Einträge vorhanden... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profile + Anlageprofil - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Möchtest du dieses Anlageprofil wirklich löschen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Search + Suche - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Manuell hinzufügen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Mit dem Finanz-Dashboard Ghostfolio können Sie Ihr Vermögen in Cash, Aktien, ETFs und Kryptowährungen über mehrere Finanzinstitute überwachen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Letztes Allzeithoch - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + User + Benutzer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs Vergleichstabelle - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Open Source Wealth Management Software + Open Source Software für die Vermögensverwaltung - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + aktie, app, asset, dashboard, etf, finanzen, kryptowährung, management, performance, portfolio, software, trading, vermögen, web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Ups, der Cash-Bestand Transfer ist fehlgeschlagen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Extreme Fear + Extreme Angst - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed + Extreme Gier - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 95 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 98 + + + Oops! Could not parse historical data. + Ups! Die historischen Daten konnten nicht geparsed werden. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Do you really want to delete this system message? + Möchtest du diese Systemmeldung wirklich löschen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + 50-Day Trend + 50 Tage Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200 Tage Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Cash Balances + Cash-Bestände - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Starting from + Ab - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + Jahr - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Do you really want to delete this account balance? + Möchtest du diesen Cash-Bestand wirklich löschen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + is an invalid currency! + ist eine ungültige Währung! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + If a translation is missing, kindly support us in extending it here. + Wenn eine Übersetzung fehlt, unterstütze uns bitte dabei, sie hier zu ergänzen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + The current market price is + Der aktuelle Marktpreis ist - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + Test + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + Date Range + Zeitraum - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 93 + + + Permission + Rechte - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + Restricted view + Eingeschränkte Ansicht - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + Oops! Could not grant access. + Ups! Der Zugang konnte nicht gewährt werden. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + Private + Privat - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Job Queue + Job Warteschlange - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + Market data is delayed for + Die Marktdaten sind verzögert für - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + Investment + Einlage - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + Absolute Asset Performance + Absolute Anlage Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + Asset Performance + Anlage Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + Absolute Currency Performance + Absolute Währungsperformance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + Currency Performance + Währungsperformance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + Absolute Net Performance + Absolute Netto Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Net Performance + Netto Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + Week to date + Seit Wochenbeginn - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + Month to date + Seit Monatsbeginn - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + Year to date + Seit Jahresbeginn - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + View + Ansicht - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + Oops! A data provider is experiencing the hiccups. + Ups! Ein Datenprovider-Partner hat gerade ein Problem. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Wenn du heute in den Ruhestand gehen würdest, könnest du pro Jahr oder pro Monatentnehmen, bezogen auf dein Gesamtanlagevermögen von und einer Entnahmerate von 4%. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + Reset Filters + Filter zurücksetzen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 155 + + + year + Jahr - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + years + Jahre - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Asset Classes + Anlageklassen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 138 + + + Apply Filters + Filter anwenden - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 165 + + + Data Gathering + Daten einholen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + General + Allgemein - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + Cloud + Cloud - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + self-hosting + self-hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + FAQ + Häufig gestellte Fragen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Ups! Es sieht so aus, als würdest du zu viele Anfragen senden. Bitte geh es ein bisschen langsamer an. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + My Account + Mein Konto - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Active + Aktiv - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Closed + Abgeschlossen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + Activity + Aktivität - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + Dividend Yield + Dividendenrendite - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + Execute Job + Job ausführen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 - - Do you really want to delete this account balance? - Möchtest du diesen Cash-Bestand wirklich löschen? + + Priority + Priorität - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - is an invalid currency! - ist eine ungültige Währung! + + This action is not allowed. + Diese Aktion ist nicht zulässig. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - If a translation is missing, kindly support us in extending it here. - Wenn eine Übersetzung fehlt, unterstütze uns bitte dabei, sie hier zu ergänzen. + + Liquidity + Liquidität - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + libs/ui/src/lib/i18n.ts + 47 - - The current market price is - Der aktuelle Marktpreis ist + + Change with currency effect + Änderung mit Währungseffekt - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - Test - Test + + Performance with currency effect + Performance mit Währungseffekt - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Date Range - Zeitraum + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {Aktivität} other {Aktivitäten}} - libs/ui/src/lib/assistant/assistant.html - 93 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Permission - Rechte + + Buy and sell + Kauf und Verkauf - apps/client/src/app/components/access-table/access-table.component.html - 17 + libs/ui/src/lib/i18n.ts + 8 + + + Delete Activities + Aktivitäten löschen - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 - - Restricted view - Eingeschränkte Ansicht + + Internationalization + Internationalisierung - apps/client/src/app/components/access-table/access-table.component.html - 25 + apps/client/src/app/app-routing.module.ts + 79 + + + Do you really want to close your Ghostfolio account? + Möchtest du dieses Ghostfolio Konto wirklich schliessen? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Oops! Could not grant access. - Ups! Der Zugang konnte nicht gewährt werden. + + Danger Zone + Gefahrenzone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Private - Privat + + Close Account + Konto schliessen - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Job Queue - Job Warteschlange + + By ETF Holding + Nach ETF Position - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Approximation based on the top holdings of each ETF + Annäherung auf Basis der grössten Positionen pro ETF - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Market data is delayed for - Die Marktdaten sind verzögert für + + Join now or check out the example account + Melde dich jetzt an oder probiere die Live Demo aus - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Investment - Einlage + + Oops! There was an error setting up biometric authentication. + Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 + + + Show more + Mehr anzeigen - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 - - Absolute Asset Performance - Absolute Anlage Performance + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Asset Performance - Anlage Performance + + Delete Profiles + Profile löschen - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 - - Absolute Currency Performance - Absolute Währungsperformance + + Do you really want to delete these profiles? + Möchtest du diese Profile wirklich löschen? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Currency Performance - Währungsperformance + + Oops! Could not delete profiles. + Ups! Die Profile konnten nicht gelöscht werden. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Absolute Net Performance - Absolute Netto Performance + + Table + Tabelle - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Net Performance - Netto Performance + + Chart + Diagramm - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Week to date - Seit Wochenbeginn + + Would you like to refine your personal investment strategy? + Möchtest du deine persönliche Anlagestrategie verfeinern? - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/public/public-page.html + 155 - - WTD - WTD + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Month to date - Seit Monatsbeginn + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - MTD - MTD + + Budgeting + Budgetierung - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - Year to date - Seit Jahresbeginn + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - View - Ansicht + + Family Office + Family Office - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Investor + Investor - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Oops! A data provider is experiencing the hiccups. - Ups! Ein Datenprovider-Partner hat gerade ein Problem. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - Wenn du heute in den Ruhestand gehen würdest, könnest du pro Jahr oder pro Monatentnehmen, bezogen auf dein Gesamtanlagevermögen von und einer Entnahmerate von 4%. + + Personal Finance + Persönliche Finanzen - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Reset Filters - Filter zurücksetzen + + Privacy + Datenschutz - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year - Jahr + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - years - Jahre + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Asset Classes - Anlageklassen + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Apply Filters - Filter anwenden + + Wealth + Vermögen - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Data Gathering - Daten einholen + + Wealth Management + Vermögensverwaltung - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - General - Allgemein + + Australia + Australien - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 72 - - Cloud - Cloud + + Austria + Österreich - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 73 + + + Belgium + Belgien - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 74 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgarien - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 75 + + + Canada + Kanada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - self-hosting - self-hosting + + Czech Republic + Tschechien - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 77 - - FAQ - Häufig gestellte Fragen + + Finland + Finnland - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 78 + + + France + Frankreich - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Ups! Es sieht so aus, als würdest du zu viele Anfragen senden. Bitte geh es ein bisschen langsamer an. + + Germany + Deutschland - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 80 - - My Account - Mein Konto + + India + Indien - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 81 - - Active - Aktiv + + Italy + Italien - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 82 - - Closed - Abgeschlossen + + Netherlands + Niederlande - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 84 - - Activity - Aktivität + + New Zealand + Neuseeland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 85 - - Dividend Yield - Dividendenrendite + + Poland + Polen - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 86 - - Execute Job - Job ausführen + + Romania + Rumänien - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 87 - - Priority - Priorität + + South Africa + Südafrika - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 88 - - This action is not allowed. - Diese Aktion ist nicht zulässig. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 90 - - Liquidity - Liquidität + + United States + USA libs/ui/src/lib/i18n.ts - 44 + 91 - - Change with currency effect - Änderung mit Währungseffekt + + Error + Fehler - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Performance with currency effect - Performance mit Währungseffekt + + Deactivate + Deaktivieren - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 67 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {Aktivität} other {Aktivitäten}} + + Activate + Aktivieren - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 69 - - Buy and sell - Kauf und Verkauf + + Inactive + Inaktiv + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 + + + + Cancel + Abbrechen libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Aktivitäten löschen + + Close + Schliessen - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalisierung + + Yes + Ja - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 7c554ca73..9eea191db 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -7,23 +7,23 @@ Crear una cuenta apps/client/src/app/app.component.html - 18 + 13 apps/client/src/app/pages/register/register-page.html - 26 + 27 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 - + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - El riesgo de pérdida en trading puede ser importante. No es aconsejable invertir dinero que puedas necesitar a corto plazo. + El riesgo de pérdida en trading puede ser sustancial. No es aconsejable invertir dinero que puedas necesitar a corto plazo. apps/client/src/app/app.component.html - 182 + 199 @@ -31,7 +31,7 @@ Beneficiario apps/client/src/app/components/access-table/access-table.component.html - 10 + 11 @@ -39,7 +39,7 @@ Tipo apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + 31 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -47,7 +47,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + 15 libs/ui/src/lib/activities-table/activities-table.component.html @@ -59,7 +59,7 @@ Detalles apps/client/src/app/components/access-table/access-table.component.html - 32 + 33 @@ -67,7 +67,7 @@ Revoca apps/client/src/app/components/access-table/access-table.component.html - 59 + 62 @@ -75,7 +75,7 @@ ¿Quieres revocar el acceso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 56 @@ -91,11 +91,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + 119 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + 152 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -103,15 +103,15 @@ apps/client/src/app/components/admin-users/admin-users.html - 134 + 135 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + 225 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -123,15 +123,15 @@ Nombre apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 + 43 apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 + 228 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -139,7 +139,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + 15 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -147,7 +147,7 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + 15 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -155,7 +155,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + 138 libs/ui/src/lib/activities-table/activities-table.component.html @@ -165,13 +165,17 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 28 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + Total Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + 55 @@ -179,43 +183,43 @@ Valor apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + 171 apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + 206 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + 53 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 207 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + 210 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + 274 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + 277 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 280 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + 283 libs/ui/src/lib/account-balances/account-balances.component.html @@ -233,25 +237,29 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 74 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + Edit Edita apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 278 apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + 215 apps/client/src/app/components/admin-overview/admin-overview.html - 80 + 78 apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + 92 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -267,27 +275,27 @@ Elimina apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + 288 apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 + 236 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 64 apps/client/src/app/components/admin-overview/admin-overview.html - 90 + 88 apps/client/src/app/components/admin-overview/admin-overview.html - 199 + 205 apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + 102 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -307,7 +315,7 @@ ¿Estás seguro de eliminar esta cuenta? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + 110 @@ -315,7 +323,7 @@ Elimina los trabajos apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + 149 @@ -323,23 +331,23 @@ Símbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 + 44 apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + 46 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + 117 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + 36 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + 305 @@ -347,19 +355,19 @@ Fuente de datos apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + 53 apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + 77 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 127 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + 154 @@ -367,7 +375,7 @@ Intentos apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + 81 @@ -375,7 +383,7 @@ Creado apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + 90 @@ -383,7 +391,7 @@ Finalizado apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + 99 @@ -391,20 +399,20 @@ Estado apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + 108 Asset Profiles - Perfil del activo + Perfiles de activos. libs/ui/src/lib/assistant/assistant.html 67 - - Historical Market Data - Datos históricos del mercado + + Historical Market Data + Datos históricos del mercado apps/client/src/app/components/admin-jobs/admin-jobs.html 37 @@ -415,7 +423,7 @@ Visualiza los datos apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + 164 @@ -423,7 +431,7 @@ Visualiza Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + 171 @@ -431,7 +439,7 @@ Elimina el trabajo apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + 177 @@ -451,7 +459,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + 160 libs/ui/src/lib/account-balances/account-balances.component.html @@ -471,7 +479,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + 114 @@ -483,19 +491,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + 378 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + 43 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + 42 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 + 25 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -507,11 +515,11 @@ apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + 65 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + 427 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -527,19 +535,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + 385 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + 50 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + 49 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + 32 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -551,7 +559,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + 434 @@ -559,15 +567,15 @@ Primera actividad apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + 143 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 213 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -579,7 +587,7 @@ Recuento de actividad apps/client/src/app/components/admin-overview/admin-overview.html - 23 + 19 @@ -587,11 +595,11 @@ Datos históricos apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 122 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + 84 @@ -599,7 +607,7 @@ Por favor, añade una divisa: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + 125 @@ -607,7 +615,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + 152 @@ -615,7 +623,7 @@ ¿Estás seguro de eliminar esta divisa? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + 165 @@ -623,7 +631,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + 202 @@ -631,7 +639,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + 222 @@ -647,7 +655,7 @@ por usario apps/client/src/app/components/admin-overview/admin-overview.html - 32 + 28 @@ -655,7 +663,7 @@ Recoger datos recientes apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + 177 @@ -663,7 +671,7 @@ Recoger todos los datos apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + 180 @@ -671,7 +679,7 @@ Recoger los datos del perfil apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + 183 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -683,7 +691,7 @@ Tipos de cambio apps/client/src/app/components/admin-overview/admin-overview.html - 37 + 34 @@ -699,7 +707,7 @@ Mensaje del sistema apps/client/src/app/components/admin-overview/admin-overview.html - 145 + 148 @@ -707,7 +715,7 @@ Establecer mensaje apps/client/src/app/components/admin-overview/admin-overview.html - 165 + 170 @@ -715,7 +723,7 @@ Modo de solo lectura apps/client/src/app/components/admin-overview/admin-overview.html - 123 + 124 @@ -723,7 +731,7 @@ Cupones apps/client/src/app/components/admin-overview/admin-overview.html - 173 + 178 @@ -731,7 +739,7 @@ Añadir apps/client/src/app/components/admin-overview/admin-overview.html - 231 + 238 libs/ui/src/lib/account-balances/account-balances.component.html @@ -743,7 +751,7 @@ Tareas domésticas apps/client/src/app/components/admin-overview/admin-overview.html - 238 + 246 @@ -751,7 +759,7 @@ Limpiar caché apps/client/src/app/components/admin-overview/admin-overview.html - 242 + 250 @@ -759,7 +767,7 @@ ¿Estás seguro de eliminar este usuario? apps/client/src/app/components/admin-users/admin-users.component.ts - 113 + 125 @@ -767,7 +775,7 @@ Usuario apps/client/src/app/components/header/header.component.html - 230 + 221 @@ -775,7 +783,7 @@ Registro apps/client/src/app/components/admin-users/admin-users.html - 96 + 97 @@ -783,15 +791,15 @@ Contratación diaria apps/client/src/app/components/admin-users/admin-users.html - 158 + 157 - + Last Request - Última petición + Última petición apps/client/src/app/components/admin-users/admin-users.html - 183 + 181 @@ -811,7 +819,7 @@ apps/client/src/app/components/header/header.component.html - 244 + 237 @@ -823,7 +831,7 @@ apps/client/src/app/components/header/header.component.html - 254 + 247 @@ -831,11 +839,11 @@ Cuentas apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 + 65 apps/client/src/app/components/admin-users/admin-users.html - 113 + 114 apps/client/src/app/components/header/header.component.html @@ -843,11 +851,11 @@ apps/client/src/app/components/header/header.component.html - 262 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -863,11 +871,11 @@ Control de administrador apps/client/src/app/components/header/header.component.html - 67 + 68 apps/client/src/app/components/header/header.component.html - 278 + 271 @@ -875,15 +883,15 @@ Recursos apps/client/src/app/app.component.html - 60 + 61 apps/client/src/app/components/header/header.component.html - 80 + 82 apps/client/src/app/components/header/header.component.html - 289 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -895,7 +903,7 @@ Precios apps/client/src/app/app.component.html - 86 + 94 apps/client/src/app/components/header/header.component.html @@ -903,295 +911,87 @@ apps/client/src/app/components/header/header.component.html - 301 + 294 apps/client/src/app/components/header/header.component.html - 370 + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + About + Sobre - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 351 + + + Me + - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 203 + + + My Ghostfolio + Mi Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 262 + + + About Ghostfolio + Sobre Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 303 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + Features + Funcionalidades - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 76 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 338 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/features/features-page.html + 5 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - - About - Sobre - - apps/client/src/app/app.component.html - 66 - - - apps/client/src/app/components/header/header.component.html - 111 - - - apps/client/src/app/components/header/header.component.html - 357 - - - - Me - - - apps/client/src/app/components/header/header.component.html - 211 - - - - My Ghostfolio - Mi Ghostfolio - - apps/client/src/app/components/header/header.component.html - 269 - - - - About Ghostfolio - Sobre Ghostfolio - - apps/client/src/app/components/header/header.component.html - 309 - - - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 - - - - Features - Funcionalidades - - apps/client/src/app/app.component.html - 73 - - - apps/client/src/app/components/header/header.component.html - 344 - - - apps/client/src/app/pages/features/features-page.html - 5 - - - - Markets - Mercados + + + Markets + Mercados apps/client/src/app/app.component.html 58 apps/client/src/app/components/header/header.component.html - 386 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1207,11 +1007,11 @@ Empezar apps/client/src/app/pages/features/features-page.html - 300 + 303 apps/client/src/app/pages/public/public-page.html - 153 + 164 @@ -1223,7 +1023,7 @@ apps/client/src/app/components/header/header.component.ts - 229 + 231 @@ -1231,7 +1031,11 @@ Vaya! Token de seguridad incorrecto. apps/client/src/app/components/header/header.component.ts - 243 + 246 + + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 @@ -1239,7 +1043,7 @@ Gestión de las operaciones apps/client/src/app/components/home-holdings/home-holdings.html - 32 + 61 @@ -1247,7 +1051,7 @@ Últimos días apps/client/src/app/components/home-market/home-market.html - 6 + 7 @@ -1265,6 +1069,10 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 10 @@ -1279,15 +1087,19 @@ apps/client/src/app/pages/landing/landing-page.html - 423 + 47 + + + apps/client/src/app/pages/landing/landing-page.html + 450 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 + 97 apps/client/src/app/pages/register/register-page.html - 29 + 30 apps/client/src/app/pages/webauthn/webauthn-page.html @@ -1323,7 +1135,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.html - 399 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1359,7 +1171,7 @@ Inversión apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 168 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1387,7 +1199,7 @@ Rendimiento neto absoluto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 + 126 @@ -1395,7 +1207,7 @@ Rendimiento neto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 + 141 @@ -1403,7 +1215,7 @@ Total de activos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 + 167 @@ -1411,7 +1223,7 @@ Objetos de valor apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 + 180 @@ -1419,7 +1231,7 @@ Fondo de emergencia apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 + 192 apps/client/src/app/pages/features/features-page.html @@ -1435,7 +1247,7 @@ Capacidad de compra apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 + 252 @@ -1443,15 +1255,15 @@ Patrimonio neto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 + 297 Annualized Performance - Rendimiento anualizado + Rendimiento anualizado apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 + 309 @@ -1459,11 +1271,11 @@ Dividendo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 + 181 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 + 343 apps/client/src/app/pages/features/features-page.html @@ -1471,11 +1283,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 + 271 @@ -1483,7 +1295,7 @@ Por favor, ingresa la cantidad de tu fondo de emergencia: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 + 58 @@ -1491,19 +1303,19 @@ Sectores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 204 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + 329 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 274 apps/client/src/app/pages/public/public-page.html - 45 + 50 @@ -1511,15 +1323,15 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 214 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + 340 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + 286 @@ -1531,11 +1343,15 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 + 393 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 + 383 libs/ui/src/lib/assistant/assistant.html @@ -1547,7 +1363,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 + 448 @@ -1557,6 +1373,10 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 98 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + Performance @@ -1567,7 +1387,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 + 91 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1642,36 +1462,12 @@ 253 - - This feature requires a subscription. - Esta funcionalidad requiere de suscripción. - - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 - - - apps/client/src/app/core/http-response.interceptor.ts - 69 - - - - Upgrade Plan - Mejorar plan - - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 - - - apps/client/src/app/core/http-response.interceptor.ts - 72 - - Okay De acuerdo apps/client/src/app/core/http-response.interceptor.ts - 92 + 81 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1699,7 +1495,7 @@ Política de privacidad apps/client/src/app/app.component.html - 90 + 100 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1711,7 +1507,7 @@ Blog apps/client/src/app/app.component.html - 68 + 70 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -1719,15 +1515,15 @@ apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html @@ -1735,7 +1531,7 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + 196 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html @@ -1759,7 +1555,7 @@ apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + 253 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1799,7 +1595,7 @@ Registro de cambios apps/client/src/app/app.component.html - 71 + 74 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1811,7 +1607,7 @@ Licencia de uso apps/client/src/app/app.component.html - 80 + 85 apps/client/src/app/pages/about/license/license-page.html @@ -1843,7 +1639,7 @@ Por favor, ingresa tu código de cupón: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 + 118 @@ -1851,7 +1647,7 @@ No se puede canjear este código de cupón apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 + 128 @@ -1859,7 +1655,7 @@ El codigo de cupón ha sido canjeado apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + 140 @@ -1867,7 +1663,7 @@ Refrescar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 + 141 @@ -1875,7 +1671,7 @@ ¿Estás seguro de eliminar este método de acceso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 + 252 @@ -1883,7 +1679,7 @@ Cuenta apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 + 85 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1903,11 +1699,11 @@ por año apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 33 apps/client/src/app/pages/pricing/pricing-page.html - 254 + 257 @@ -1915,7 +1711,7 @@ Prueba Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 + 40 @@ -1923,7 +1719,7 @@ Canjea el cupón apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + 54 @@ -1947,7 +1743,7 @@ Ubicación apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 + 123 @@ -1955,7 +1751,7 @@ Formato de fecha y número apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 125 @@ -1963,19 +1759,19 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 + 173 apps/client/src/app/pages/features/features-page.html - 190 + 191 Sign in with fingerprint - Accede con huella digital + Iniciar sesión con huella digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 + 191 @@ -1987,7 +1783,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 + 224 @@ -2043,7 +1839,7 @@ Efectivo apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 + 226 @@ -2051,15 +1847,15 @@ Divisa base apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + 65 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + 132 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + 235 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2067,7 +1863,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + 144 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2083,7 +1879,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + 136 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2099,7 +1895,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + 86 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2140,7 +1936,7 @@ Frequently Asked Questions (FAQ) - Preguntas más frecuentes (FAQ) + Preguntas más frecuentes (FAQ) apps/client/src/app/pages/faq/faq-page-routing.module.ts 34 @@ -2219,7 +2015,7 @@ Por cuenta apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 + 286 @@ -2235,7 +2031,7 @@ Por tipo de activo apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 + 85 @@ -2243,7 +2039,7 @@ Por participación apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 + 107 @@ -2251,7 +2047,7 @@ Por sector apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 + 130 @@ -2259,7 +2055,7 @@ Por continente apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 + 153 @@ -2267,7 +2063,7 @@ Por país apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 + 264 @@ -2275,11 +2071,11 @@ Regiones apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 + 198 apps/client/src/app/pages/public/public-page.html - 76 + 87 @@ -2307,7 +2103,7 @@ Cronología de la inversión apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 + 296 @@ -2315,7 +2111,7 @@ Lo mejor apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 166 @@ -2323,7 +2119,7 @@ Lo peor apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 + 215 @@ -2355,7 +2151,7 @@ Regla del 4% apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 + 40 @@ -2403,7 +2199,7 @@ Actualizar opereación apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 + 10 @@ -2411,7 +2207,7 @@ Añadir operación apps/client/src/app/components/home-overview/home-overview.html - 56 + 52 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2423,7 +2219,7 @@ Venta libs/ui/src/lib/i18n.ts - 37 + 40 @@ -2431,11 +2227,11 @@ Nombre, símbolo o ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 26 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + 124 @@ -2443,11 +2239,11 @@ Cantidad apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 + 156 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 + 188 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2459,11 +2255,11 @@ Precio unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 + 286 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2475,11 +2271,11 @@ Comisión apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 306 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 330 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2491,7 +2287,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + 365 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2499,7 +2295,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + 339 @@ -2507,23 +2303,23 @@ Tipo de activo apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + 86 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + 161 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + 245 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + 232 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + 354 @@ -2573,13 +2369,17 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts 41 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + Currencies Divisas apps/client/src/app/pages/public/public-page.html - 30 + 32 @@ -2587,7 +2387,7 @@ Continentes apps/client/src/app/pages/public/public-page.html - 60 + 68 @@ -2595,7 +2395,7 @@ Ghostfolio te permite hacer un seguimiento de tu riqueza. apps/client/src/app/pages/public/public-page.html - 148 + 159 @@ -2611,7 +2411,7 @@ Continuar con Internet Identity apps/client/src/app/pages/register/register-page.html - 41 + 42 @@ -2619,7 +2419,7 @@ Continuar con Google apps/client/src/app/pages/register/register-page.html - 51 + 53 @@ -2688,10 +2488,10 @@ Import Activities - Importar operaciones + Importar operaciones apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 + 45 @@ -2739,7 +2539,7 @@ ¿Estás seguro de eliminar esta operación? libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + 235 @@ -2787,7 +2587,7 @@ Idioma apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 + 48 @@ -2795,7 +2595,7 @@ Comenzar apps/client/src/app/components/header/header.component.html - 411 + 404 @@ -2803,7 +2603,7 @@ Esta funcionalidad no está disponible actualmente. apps/client/src/app/core/http-response.interceptor.ts - 60 + 53 @@ -2811,7 +2611,7 @@ Vaya! Algo no funcionó bien. apps/client/src/app/core/http-response.interceptor.ts - 89 + 78 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2823,11 +2623,11 @@ Por favor, prueba más tarde. apps/client/src/app/core/http-response.interceptor.ts - 62 + 55 apps/client/src/app/core/http-response.interceptor.ts - 91 + 80 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2839,7 +2639,7 @@ Modificar apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 + 65 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -2851,11 +2651,11 @@ Mercados desarrollados apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 + 222 apps/client/src/app/pages/public/public-page.html - 93 + 104 @@ -2863,23 +2663,23 @@ Subtipo de activo apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + 95 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + 170 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + 258 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + 241 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + 370 @@ -2887,7 +2687,7 @@ Precio unitario medio apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 + 103 @@ -2895,7 +2695,7 @@ Precio máximo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 + 146 @@ -2903,11 +2703,11 @@ Otros mercados apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 + 240 apps/client/src/app/pages/public/public-page.html - 111 + 122 @@ -2915,11 +2715,11 @@ Mercados emergentes apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 + 231 apps/client/src/app/pages/public/public-page.html - 102 + 113 @@ -2927,11 +2727,11 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + 187 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + 258 @@ -2939,7 +2739,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + 198 apps/client/src/app/components/admin-users/admin-users.html @@ -2947,7 +2747,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + 268 @@ -2955,7 +2755,7 @@ Precio mínimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 + 130 @@ -2971,7 +2771,7 @@ Ahorros libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 381 @@ -2979,11 +2779,11 @@ Interés libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + 371 libs/ui/src/lib/i18n.ts - 34 + 37 @@ -2991,7 +2791,7 @@ Depósito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 + 361 @@ -3007,7 +2807,7 @@ Número de sectores apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + 131 @@ -3015,7 +2815,7 @@ Número de países apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + 140 @@ -3023,11 +2823,11 @@ Miedo apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts - 71 + 96 @@ -3035,11 +2835,11 @@ Codicia apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts - 72 + 97 @@ -3047,7 +2847,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + 328 @@ -3063,7 +2863,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 3 + 4 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -3075,7 +2875,7 @@ Funcionalidades experimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 + 207 @@ -3091,7 +2891,7 @@ Comparar con... apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 + 18 @@ -3107,7 +2907,7 @@ Excluido del análisis apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 + 264 @@ -3115,7 +2915,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 + 38 @@ -3123,7 +2923,7 @@ Apariencia apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 + 148 @@ -3131,7 +2931,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 + 162 @@ -3139,7 +2939,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 + 163 @@ -3147,7 +2947,7 @@ Oscuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 164 @@ -3155,7 +2955,7 @@ Importe total apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 + 141 @@ -3163,7 +2963,7 @@ Evolución cartera apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 268 @@ -3171,7 +2971,7 @@ Tasa de ahorro apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 + 213 @@ -3195,7 +2995,7 @@ Símbolo libs/ui/src/lib/i18n.ts - 25 + 27 @@ -3203,7 +3003,7 @@ Etiqueta libs/ui/src/lib/i18n.ts - 26 + 28 @@ -3211,7 +3011,7 @@ Efectivo libs/ui/src/lib/i18n.ts - 40 + 43 @@ -3219,7 +3019,7 @@ Bien libs/ui/src/lib/i18n.ts - 41 + 44 @@ -3227,7 +3027,7 @@ Capital libs/ui/src/lib/i18n.ts - 42 + 45 @@ -3235,7 +3035,7 @@ Renta fija libs/ui/src/lib/i18n.ts - 43 + 46 @@ -3243,7 +3043,7 @@ Propiedad inmobiliaria libs/ui/src/lib/i18n.ts - 45 + 48 @@ -3251,7 +3051,7 @@ Bono libs/ui/src/lib/i18n.ts - 48 + 51 @@ -3259,7 +3059,7 @@ Criptomoneda libs/ui/src/lib/i18n.ts - 49 + 52 @@ -3267,7 +3067,7 @@ ETF libs/ui/src/lib/i18n.ts - 50 + 53 @@ -3275,7 +3075,7 @@ Fondo de inversión libs/ui/src/lib/i18n.ts - 51 + 54 @@ -3283,7 +3083,7 @@ Metal precioso libs/ui/src/lib/i18n.ts - 52 + 55 @@ -3291,7 +3091,7 @@ Capital riesgo libs/ui/src/lib/i18n.ts - 53 + 56 @@ -3299,7 +3099,7 @@ Acción libs/ui/src/lib/i18n.ts - 54 + 57 @@ -3307,7 +3107,7 @@ Fondo de emergencia libs/ui/src/lib/i18n.ts - 13 + 15 @@ -3315,11 +3115,11 @@ Otros libs/ui/src/lib/i18n.ts - 21 + 23 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + 403 @@ -3327,11 +3127,11 @@ Sin datos disponibles libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + 405 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + 418 @@ -3339,7 +3139,7 @@ América del Norte libs/ui/src/lib/i18n.ts - 64 + 67 @@ -3347,7 +3147,7 @@ África libs/ui/src/lib/i18n.ts - 61 + 64 @@ -3355,7 +3155,7 @@ Asia libs/ui/src/lib/i18n.ts - 62 + 65 @@ -3363,7 +3163,7 @@ Europa libs/ui/src/lib/i18n.ts - 63 + 66 @@ -3371,7 +3171,7 @@ Oceanía libs/ui/src/lib/i18n.ts - 65 + 68 @@ -3379,7 +3179,7 @@ América del Sur libs/ui/src/lib/i18n.ts - 66 + 69 @@ -3387,7 +3187,7 @@ Los siguientes formatos de archivo están soportados: apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 + 90 @@ -3395,11 +3195,11 @@ Volver apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 + 144 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 + 178 @@ -3407,43 +3207,47 @@ Comunidad apps/client/src/app/app.component.html - 105 + 118 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 77 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 83 apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 88 apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + 92 apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + 96 apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + 100 apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + 105 apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + 110 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 apps/client/src/app/pages/features/features-page.html - 256 + 259 @@ -3451,7 +3255,7 @@ Recuento de actividades apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 113 @@ -3467,27 +3271,27 @@ Mapeo de símbolos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + 292 Dividend - Dividend + Dividendo apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts 38 libs/ui/src/lib/i18n.ts - 32 + 35 Dividend Timeline - Dividend Timeline + Calendario de dividendos apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 + 354 @@ -3500,7 +3304,7 @@ User Signup - User Signup + Registro de usuario apps/client/src/app/components/admin-overview/admin-overview.html 110 @@ -3508,31 +3312,31 @@ Validating data... - Validating data... + Validando datos... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 + 234 Import - Import + Importar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 + 110 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 + 153 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 + 186 Market Data - Market Data + Datos del mercado apps/client/src/app/pages/admin/admin-page-routing.module.ts 30 @@ -3544,7 +3348,7 @@ Users - Users + Usuarios apps/client/src/app/pages/admin/admin-page-routing.module.ts 40 @@ -3556,7 +3360,7 @@ Summary - Summary + Resumen apps/client/src/app/pages/home/home-page-routing.module.ts 33 @@ -3571,20 +3375,20 @@ Holding apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 + 32 Load Dividends - Load Dividends + Cargar dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 + 68 Yearly - Yearly + Anual apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts 51 @@ -3592,7 +3396,7 @@ Import Dividends - Import Dividends + Importar Dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 86 @@ -3600,7 +3404,7 @@ Valid until - Valid until + Válido hasta libs/ui/src/lib/membership-card/membership-card.component.html 23 @@ -3611,52 +3415,52 @@ Core libs/ui/src/lib/i18n.ts - 9 + 10 Grant - Grant + Conceder libs/ui/src/lib/i18n.ts - 14 + 17 Higher Risk - Higher Risk + Riesgo mayor libs/ui/src/lib/i18n.ts - 15 + 18 Lower Risk - Lower Risk + Menor riesgo libs/ui/src/lib/i18n.ts - 18 + 20 Retirement Provision - Retirement Provision + Provisión de jubilación libs/ui/src/lib/i18n.ts - 23 + 25 Satellite - Satellite + Satélite libs/ui/src/lib/i18n.ts - 24 + 26 Protection for sensitive information like absolute performances and quantity values - Protection for sensitive information like absolute performances and quantity values + Protección de información confidencial como rendimientos absolutos y valores cuantitativos apps/client/src/app/components/user-account-settings/user-account-settings.html 8 @@ -3664,23 +3468,23 @@ Distraction-free experience for turbulent times - Distraction-free experience for turbulent times + Experiencia sin distracciones para tiempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + 174 Sneak peek at upcoming functionality - Sneak peek at upcoming functionality + Un adelanto de las próximas funciones apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 208 Are you an ambitious investor who needs the full picture? - Are you an ambitious investor who needs the full picture? + ¿Es usted un inversor ambicioso que necesita una visión completa? apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 12 @@ -3688,71 +3492,71 @@ Portfolio Summary - Portfolio Summary + Resumen de la cartera apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 22 apps/client/src/app/pages/pricing/pricing-page.html - 55 + 57 apps/client/src/app/pages/pricing/pricing-page.html - 199 + 203 Performance Benchmarks - Performance Benchmarks + Puntos de referencia de rendimiento apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 30 apps/client/src/app/pages/pricing/pricing-page.html - 63 + 65 apps/client/src/app/pages/pricing/pricing-page.html - 207 + 211 FIRE Calculator - FIRE Calculator + Calculadora FIRE apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 34 apps/client/src/app/pages/pricing/pricing-page.html - 67 + 69 apps/client/src/app/pages/pricing/pricing-page.html - 211 + 215 and more Features... - and more Features... + y más características... apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 42 apps/client/src/app/pages/pricing/pricing-page.html - 83 + 85 apps/client/src/app/pages/pricing/pricing-page.html - 231 + 235 Skip - Skip + Saltar apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 52 @@ -3760,10 +3564,10 @@ Upgrade Plan - Upgrade Plan + Mejorar plan apps/client/src/app/components/header/header.component.html - 182 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3771,147 +3575,147 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + 16 apps/client/src/app/pages/pricing/pricing-page.html - 268 + 271 For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + Para inversores expertos en tecnología que prefieren ejecutar Ghostfolio en su propia infraestructura. apps/client/src/app/pages/pricing/pricing-page.html - 36 + 38 Unlimited Transactions - Unlimited Transactions + Transacciones ilimitadas apps/client/src/app/pages/pricing/pricing-page.html - 43 + 45 apps/client/src/app/pages/pricing/pricing-page.html - 126 + 129 apps/client/src/app/pages/pricing/pricing-page.html - 187 + 191 Unlimited Accounts - Unlimited Accounts + Cuentas ilimitadas apps/client/src/app/pages/pricing/pricing-page.html - 47 + 49 apps/client/src/app/pages/pricing/pricing-page.html - 130 + 133 apps/client/src/app/pages/pricing/pricing-page.html - 191 + 195 Portfolio Performance - Portfolio Performance + Rendimiento del Portfolio apps/client/src/app/pages/pricing/pricing-page.html - 51 + 53 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 137 apps/client/src/app/pages/pricing/pricing-page.html - 195 + 199 Self-hosted, update manually. - Self-hosted, update manually. + Auto alojado, actualiza manualmente. apps/client/src/app/pages/pricing/pricing-page.html - 92 + 94 Free - Free + Gratis apps/client/src/app/pages/pricing/pricing-page.html - 93 + 95 apps/client/src/app/pages/pricing/pricing-page.html - 150 + 153 For new investors who are just getting started with trading. - For new investors who are just getting started with trading. + Para nuevos inversores que estan empezando con el trading. apps/client/src/app/pages/pricing/pricing-page.html - 120 + 123 Fully managed Ghostfolio cloud offering. - Fully managed Ghostfolio cloud offering. + Oferta en la nube de Ghostfolio totalmente administrada. apps/client/src/app/pages/pricing/pricing-page.html - 149 + 152 apps/client/src/app/pages/pricing/pricing-page.html - 240 + 244 For ambitious investors who need the full picture of their financial assets. - For ambitious investors who need the full picture of their financial assets. + Para inversores ambiciosos que necesitan una visión completa de sus activos financieros apps/client/src/app/pages/pricing/pricing-page.html - 180 + 184 One-time payment, no auto-renewal. - One-time payment, no auto-renewal. + Pago único, sin renovación automática. apps/client/src/app/pages/pricing/pricing-page.html 280 - + Get Started - Get Started + Empieza - apps/client/src/app/pages/pricing/pricing-page.html - 291 + apps/client/src/app/pages/landing/landing-page.html + 446 It’s free. - It’s free. + Es gratis. apps/client/src/app/pages/pricing/pricing-page.html - 294 + 301 Fees - Fees + Comisiones apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 + 203 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3919,32 +3723,32 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 + 176 Portfolio Allocations - Portfolio Allocations + Distribucion del Portfolio apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 26 apps/client/src/app/pages/features/features-page.html - 160 + 161 apps/client/src/app/pages/pricing/pricing-page.html - 59 + 61 apps/client/src/app/pages/pricing/pricing-page.html - 203 + 207 Savings Rate per Month - Savings Rate per Month + Tasa de Ahorro Mensual libs/ui/src/lib/fire-calculator/fire-calculator.component.html 10 @@ -3952,74 +3756,74 @@ Data Import and Export - Data Import and Export + Importacion y exportacion de datos apps/client/src/app/pages/pricing/pricing-page.html - 71 + 73 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 141 apps/client/src/app/pages/pricing/pricing-page.html - 215 + 219 Switch to Ghostfolio Premium easily - Switch to Ghostfolio Premium easily + Cambia a Ghostfolio Premium facilmente libs/ui/src/lib/i18n.ts - 11 + 13 Community Support - Community Support + Soporte de la comunidad apps/client/src/app/pages/pricing/pricing-page.html - 88 + 90 Email and Chat Support - Email and Chat Support + Soporte a Traves de Email y Chat apps/client/src/app/pages/pricing/pricing-page.html - 236 + 240 Switch to Ghostfolio Premium or Ghostfolio Open Source easily - Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Cambie a Ghostfolio Premium o Ghostfolio Open Source fácilmente libs/ui/src/lib/i18n.ts - 10 + 12 Switch to Ghostfolio Open Source or Ghostfolio Basic easily - Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Cambie a Ghostfolio Open Source o Ghostfolio Basic fácilmente libs/ui/src/lib/i18n.ts - 12 + 14 Market data provided by - Market data provided by + Datos de mercado proporcionados por libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html 2 - + Oops! Could not get the historical exchange rate from Oops! Could not get the historical exchange rate from apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 + 240 @@ -4047,7 +3851,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 226 + 230 @@ -4060,14 +3864,14 @@ Renew Plan - Renew Plan + Renovar Plan apps/client/src/app/components/header/header.component.html - 190 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 + 21 apps/client/src/app/pages/pricing/pricing-page.html @@ -4087,7 +3891,7 @@ Impersonate User apps/client/src/app/components/admin-users/admin-users.html - 222 + 218 @@ -4095,7 +3899,7 @@ Delete User apps/client/src/app/components/admin-users/admin-users.html - 232 + 229 @@ -4103,7 +3907,7 @@ Do you really want to delete these activities? libs/ui/src/lib/activities-table/activities-table.component.ts - 216 + 225 @@ -4111,7 +3915,7 @@ By ETF Provider apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 + 306 @@ -4119,7 +3923,7 @@ Update platform apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 + 8 @@ -4127,7 +3931,7 @@ Add platform apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + 10 @@ -4135,15 +3939,15 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 + 352 apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 + 51 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + 25 @@ -4151,7 +3955,7 @@ Do you really want to delete this platform? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 + 86 @@ -4167,7 +3971,7 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 + 112 @@ -4235,7 +4039,7 @@ This activity already exists. libs/ui/src/lib/i18n.ts - 16 + 19 @@ -4243,7 +4047,7 @@ Manage Benchmarks apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 + 35 @@ -4259,7 +4063,7 @@ Select File apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 + 22 @@ -4267,7 +4071,7 @@ Select Dividends apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + 113 @@ -4275,7 +4079,7 @@ Select Activities apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 + 115 @@ -4307,7 +4111,7 @@ Personal Finance apps/client/src/app/app.component.html - 55 + 54 @@ -4315,7 +4119,7 @@ Frequently Asked Questions (FAQ) apps/client/src/app/app.component.html - 76 + 80 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -4327,7 +4131,7 @@ Current Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 + 317 @@ -4335,7 +4139,7 @@ Longest Streak apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 + 326 @@ -4343,7 +4147,7 @@ Months libs/ui/src/lib/i18n.ts - 20 + 22 @@ -4351,7 +4155,7 @@ Years libs/ui/src/lib/i18n.ts - 28 + 30 @@ -4359,7 +4163,7 @@ Month libs/ui/src/lib/i18n.ts - 19 + 21 @@ -4367,7 +4171,7 @@ Year libs/ui/src/lib/i18n.ts - 27 + 29 @@ -4375,7 +4179,7 @@ Liabilities apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 + 279 apps/client/src/app/pages/features/features-page.html @@ -4475,7 +4279,7 @@ Dark Mode apps/client/src/app/pages/features/features-page.html - 177 + 178 @@ -4483,7 +4287,7 @@ Market Mood apps/client/src/app/pages/features/features-page.html - 205 + 206 @@ -4491,7 +4295,7 @@ Static Analysis apps/client/src/app/pages/features/features-page.html - 224 + 225 @@ -4499,7 +4303,7 @@ Multi-Language apps/client/src/app/pages/features/features-page.html - 241 + 242 @@ -4507,7 +4311,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 275 + 278 @@ -4515,7 +4319,7 @@ Liability libs/ui/src/lib/i18n.ts - 36 + 39 @@ -4523,7 +4327,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + 304 @@ -4544,7 +4348,7 @@ Discover Open Source Alternatives for Personal Finance Tools - Discover Open Source Alternatives for Personal Finance Tools + Descubra alternativas de software libre para herramientas de finanzas personales apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 4 @@ -4552,11026 +4356,2666 @@ Founded - Founded + Fundada - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 72 + + + Origin + Origen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region + Región - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in + Disponible en - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes + ✅ Sí - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously + Uso anónimo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan + Plan gratuito - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Notes + Notas - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Siga, analice y visualice su patrimonio sin esfuerzo con Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Personal Finance Tools + Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Guides + Guides - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 22 + + + Glossary + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Stocks, ETFs, bonds, cryptocurrencies, commodities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + Mortgages, personal loans, credit cards + Mortgages, personal loans, credit cards - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + Luxury items, real estate, private companies + Luxury items, real estate, private companies - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Buy + Buy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 34 + + + Valuable + Valuable - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 38 + + + ETFs without Countries + ETFs without Countries - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + ETFs without Sectors + ETFs without Sectors - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 + + + Assets + Assets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + Preset + Preset - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 24 + + + By Market + By Market - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Asia-Pacific + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 5 + + + Japan + Japan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 83 + + + Welcome to Ghostfolio + Welcome to Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Setup your accounts + Setup your accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Get a comprehensive financial overview by adding your bank and brokerage accounts. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + Capture your activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Record your investment activities to keep your portfolio up to date. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Monitor and analyze your portfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Track your progress in real-time with comprehensive analysis and insights. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + No data available + No data available - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Ready to take control of your personal finances? + Ready to take control of your personal finances? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + Setup accounts + Setup accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 44 - - Origin - Origin + + Biometric Authentication + Biometric Authentication - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 6 + + + Active Users + Active Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 62 + + + New Users + New Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 51 + + + Users in Slack community + Users in Slack community - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - - Region - Region - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - Available in - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ Yes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - Self-Hosting - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - Use anonymously - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - Free Plan - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Notes - Notes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - - Personal Finance Tools - Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - - Guides - Guides - - apps/client/src/app/pages/resources/resources-page.html - 22 - - - - Glossary - Glossary - - apps/client/src/app/pages/resources/resources-page.html - 92 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - Luxury items, real estate, private companies - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Buy - Buy - - libs/ui/src/lib/i18n.ts - 31 - - - - Valuable - Valuable - - libs/ui/src/lib/i18n.ts - 35 - - - - ETFs without Countries - ETFs without Countries - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 - - - - ETFs without Sectors - ETFs without Sectors - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 - - - - Assets - Assets - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 - - - - Preset - Preset - - libs/ui/src/lib/i18n.ts - 22 - - - - By Market - By Market - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Asia-Pacific - Asia-Pacific - - libs/ui/src/lib/i18n.ts - 5 - - - - Japan - Japan - - libs/ui/src/lib/i18n.ts - 17 - - - - Welcome to Ghostfolio - Welcome to Ghostfolio - - apps/client/src/app/components/home-overview/home-overview.html - 7 - - - - Setup your accounts - Setup your accounts - - apps/client/src/app/components/home-overview/home-overview.html - 15 - - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Get a comprehensive financial overview by adding your bank and brokerage accounts. - - apps/client/src/app/components/home-overview/home-overview.html - 17 - - - - Capture your activities - Capture your activities - - apps/client/src/app/components/home-overview/home-overview.html - 24 - - - - Record your investment activities to keep your portfolio up to date. - Record your investment activities to keep your portfolio up to date. - - apps/client/src/app/components/home-overview/home-overview.html - 26 - - - - Monitor and analyze your portfolio - Monitor and analyze your portfolio - - apps/client/src/app/components/home-overview/home-overview.html - 33 - - - - Track your progress in real-time with comprehensive analysis and insights. - Track your progress in real-time with comprehensive analysis and insights. - - apps/client/src/app/components/home-overview/home-overview.html - 35 - - - - No data available - No data available - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - Ready to take control of your personal finances? - Ready to take control of your personal finances? - - apps/client/src/app/components/home-overview/home-overview.html - 8 - - - - Setup accounts - Setup accounts - - apps/client/src/app/components/home-overview/home-overview.html - 48 - - - - Biometric Authentication - Biometric Authentication - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - - apps/client/src/app/pages/open/open-page.html - 6 - - - - Active Users - Active Users - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - New Users - New Users - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Users in Slack community - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - Contributors on GitHub - - apps/client/src/app/pages/open/open-page.html - 89 - - - - Stars on GitHub - Stars on GitHub - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - Pulls on Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - Uptime - Uptime - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Export Data - Export Data - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - Currencies - Currencies - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 - - - - Our - Our - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Visit - Visit - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Discover other exciting Open Source Software projects - Discover other exciting Open Source Software projects - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Check out the numerous features of Ghostfolio to manage your wealth - Check out the numerous features of Ghostfolio to manage your wealth - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Discover the latest Ghostfolio updates and insights on personal finance - Discover the latest Ghostfolio updates and insights on personal finance - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - Manage your wealth like a boss - Manage your wealth like a boss - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - Get Started - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - or - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Monthly Active Users - Monthly Active Users - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - As seen in - As seen in - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - Protect your assets. Refine your personal investment strategy. - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - 360° View - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Web3 Ready - Web3 Ready - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - Use Ghostfolio anonymously and own your financial data. - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - Open Source - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - Benefit from continuous improvements through a strong community. - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - Why Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - Ghostfolio is for you if you are... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - pursuing a buy & hold strategy - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - valuing privacy and data ownership - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - into minimalism - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - caring about diversifying your financial resources - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - interested in financial independence - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - saying no to spreadsheets in - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - still reading this list - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - Learn more about Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - What our users are saying - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - How does Ghostfolio work? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Sign up anonymously* - Sign up anonymously* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - * no e-mail address nor credit card required - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - Add any of your historical transactions - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - Are you ready? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - Join now or check out the example account - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - Live Demo - Live Demo - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Get started in only 3 steps - Get started in only 3 steps - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - faq - preguntas-mas-frecuentes - - apps/client/src/app/app.component.ts - 66 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 37 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 42 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 48 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 17 - - - - features - funcionalidades - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/components/header/header.component.ts - 78 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 - - - - about - sobre - - apps/client/src/app/app.component.ts - 59 - - - apps/client/src/app/app.component.ts - 60 - - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/app.component.ts - 63 - - - apps/client/src/app/components/header/header.component.ts - 77 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 - - - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - apps/client/src/app/pages/about/about-page.component.ts - 74 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 - - - - privacy-policy - politica-de-privacidad - - apps/client/src/app/app.component.ts - 64 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - - license - licencia - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - - markets - mercados - - apps/client/src/app/app.component.ts - 68 - - - apps/client/src/app/components/header/header.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 - - - - pricing - precios - - apps/client/src/app/app.component.ts - 69 - - - apps/client/src/app/components/header/header.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 - - - apps/client/src/app/core/http-response.interceptor.ts - 83 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 - - - - register - registro - - apps/client/src/app/app.component.ts - 70 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 - - - apps/client/src/app/pages/features/features-page.component.ts - 31 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 - - - - resources - recursos - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/components/header/header.component.ts - 81 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/features/features-page.component.ts - 32 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 19 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - Open Source Alternative to - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - The Open Source Alternative to - The Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - open-source-alternative-to - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - - Ready to take your investments to the next level? - Ready to take your investments to the next level? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - - Get Started - Get Started - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - - Switzerland - Switzerland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 - - - - Global - Global - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 - - - - United States - United States - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 - - - - Belgium - Belgium - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 - - - - Germany - Germany - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 - - - - Austria - Austria - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 - - - - Italy - Italy - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 - - - - Netherlands - Netherlands - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 - - - - Thailand - Thailand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 - - - - New Zealand - New Zealand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 - - - - Czech Republic - Czech Republic - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 - - - - (Last 24 hours) - (Last 24 hours) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - (Last 30 days) - (Last 30 days) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - (Last 90 days) - (Last 90 days) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Choose or drop a file here - Choose or drop a file here - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - You are using the Live Demo. - You are using the Live Demo. - - apps/client/src/app/app.component.html - 17 - - - - One-time fee, annual account fees - One-time fee, annual account fees - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - Distribution of corporate earnings - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Oops! Could not get the historical exchange rate from - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - Fee - - libs/ui/src/lib/i18n.ts - 33 - - - - Interest - Interest - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - Revenue for lending out money - Revenue for lending out money - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Add Tag - Add Tag - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - Do you really want to delete this tag? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - Update tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - Add tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - France - France - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - Currency Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - Account Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Transfer Cash Balance - Transfer Cash Balance - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Benchmark - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 - - - - Version - Version - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/open/open-page.html + 75 - - Settings - Settings + + Contributors on GitHub + Contributors on GitHub - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/open/open-page.html + 89 - - From - From + + Stars on GitHub + Stars on GitHub - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/landing/landing-page.html + 88 - - - To - To - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 + apps/client/src/app/pages/open/open-page.html + 103 - - Transfer - Transfer + + Pulls on Docker Hub + Pulls on Docker Hub - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 + apps/client/src/app/pages/landing/landing-page.html + 106 - - - Finland - Finland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 + apps/client/src/app/pages/open/open-page.html + 117 - - Membership - Membership - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - + + Uptime + Uptime - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 + apps/client/src/app/pages/open/open-page.html + 132 - - Access - Access - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - + + Export Data + Export Data - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 - - Find holding... - Find holding... + + Currencies + Currencies - libs/ui/src/lib/assistant/assistant.component.ts - 138 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 - - No entries... - No entries... - - libs/ui/src/lib/assistant/assistant.html - 63 - + + Our + Our - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 - - Asset Profile - Asset Profile + + Visit + Visit - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? + + Discover other exciting Open Source Software projects + Discover other exciting Open Source Software projects - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 - - Search - Search + + Frequently Asked Questions (FAQ) + Frequently Asked Questions (FAQ) - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - - - Add Manually - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas. - apps/client/src/app/pages/i18n/i18n-page.html + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html 4 - - Last All Time High - Last All Time High + + Check out the numerous features of Ghostfolio to manage your wealth + Check out the numerous features of Ghostfolio to manage your wealth - libs/ui/src/lib/benchmark/benchmark.component.html - 65 + apps/client/src/app/pages/features/features-page.html + 6 - - User - User + + Discover the latest Ghostfolio updates and insights on personal finance + Discover the latest Ghostfolio updates and insights on personal finance - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/blog/blog-page.html + 7 - - Ghostfolio vs comparison table - Ghostfolio vs comparison table - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + Manage your wealth like a boss + Manage your wealth like a boss - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started + Empezar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Monthly Active Users + Monthly Active Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 70 + + + As seen in + As seen in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + Protect your assets. Refine your personal investment strategy. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 229 + + + 360° View + 360° View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Web3 Ready + Web3 Ready - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + Use Ghostfolio anonymously and own your financial data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source + Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. + Benefit from continuous improvements through a strong community. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + Why Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 272 + + + Ghostfolio is for you if you are... + Ghostfolio is for you if you are... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + trading stocks, ETFs or cryptocurrencies on multiple platforms - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy + pursuing a buy & hold strategy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition + interested in getting insights of your portfolio composition - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership + valuing privacy and data ownership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism + into minimalism - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 299 + + + caring about diversifying your financial resources + caring about diversifying your financial resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence + interested in financial independence - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in + saying no to spreadsheets in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list + still reading this list - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio + Learn more about Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 319 + + + What our users are saying + What our users are saying - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + Members from around the globe are using Ghostfolio Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + How does Ghostfolio work? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Sign up anonymously* + Sign up anonymously* - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 392 - - Canada - Canada + + * no e-mail address nor credit card required + * no e-mail address nor credit card required - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 + apps/client/src/app/pages/landing/landing-page.html + 394 - - Open Source Wealth Management Software - Open Source Wealth Management Software + + Add any of your historical transactions + Add any of your historical transactions - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/landing/landing-page.html + 405 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + Get valuable insights of your portfolio composition + Get valuable insights of your portfolio composition - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/landing/landing-page.html + 417 - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. + + Are you ready? + Are you ready? - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 + apps/client/src/app/pages/landing/landing-page.html + 431 - - Poland - Poland + + Live Demo + Live Demo - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + apps/client/src/app/pages/landing/landing-page.html + 49 - - - South Africa - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 + apps/client/src/app/pages/landing/landing-page.html + 451 - - Extreme Fear - Extreme Fear + + Get the full picture of your personal finances across multiple platforms. + Get the full picture of your personal finances across multiple platforms. - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/landing/landing-page.html + 242 - - Extreme Greed - Extreme Greed + + Get started in only 3 steps + Get started in only 3 steps - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/pages/landing/landing-page.html + 386 - - Neutral - Neutral + + faq + preguntas-mas-frecuentes - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/app.component.ts + 67 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 + apps/client/src/app/core/paths.ts + 3 + + + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - - - 200-Day Trend - 200-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - - - Cash Balances - Cash Balances - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 - - Starting from - Starting from + + features + funcionalidades - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + about + sobre - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 64 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 83 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 2 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 50 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 74 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/landing/landing-page.component.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + privacy-policy + politica-de-privacidad - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + license + licencia - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + mercados - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + precios - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + register + registro - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 71 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 + + + resources + recursos - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 82 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore the links below to compare a variety of personal finance tools with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Alternativa de software libre a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Alternativa de software libre a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + The Open Source Alternative to + La alternativa de software libre a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + open-source-alternative-to + alternativa-de-software-libre-a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? + ¿Listo para llevar sus inversiones al siguiente nivel? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Get Started + Get Started - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 89 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 16 + + + (Last 24 hours) + (Last 24 hours) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Last 30 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Last 90 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 - - year - year + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Oops! Could not get the historical exchange rate from + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 36 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks + Account Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + Find holding... + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profile + Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Search + Search - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Add Manually - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + User + User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs tabla comparativa - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 95 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 98 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + is an invalid currency! + is an invalid currency! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + The current market price is + The current market price is - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + Test + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + Date Range + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 93 + + + Permission + Permiso - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + Restricted view + Restricted view - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + Oops! Could not grant access. + Oops! Could not grant access. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + Private + Privado - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Job Queue + Job Queue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + Market data is delayed for + Market data is delayed for - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + Investment + Inversión - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + Absolute Asset Performance + Absolute Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + Asset Performance + Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + Absolute Currency Performance + Absolute Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + Currency Performance + Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + Absolute Net Performance + Absolute Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Net Performance + Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + Week to date + Week to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + Month to date + Month to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + Year to date + Year to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + View + Ver - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + Oops! A data provider is experiencing the hiccups. + Oops! A data provider is experiencing the hiccups. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + Reset Filters + Reiniciar filtros - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 155 + + + year + año - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + years + años - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Asset Classes + Asset Classes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 138 + + + Apply Filters + Aplicar filtros - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 165 + + + Data Gathering + Data Gathering - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + General + General - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + Cloud + Nube - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + self-hosting + auto alojado - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + FAQ + Preguntas frequentes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! It looks like you’re making too many requests. Please slow down a bit. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + My Account + Mi cuenta - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Active + Activo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Closed + Closed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + Activity + Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + Dividend Yield + Dividend Yield - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + Execute Job + Ejecutar Tarea - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + Priority + Prioridad - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - is an invalid currency! - is an invalid currency! + + This action is not allowed. + This action is not allowed. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Liquidity + Liquidez - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + libs/ui/src/lib/i18n.ts + 47 - - The current market price is - The current market price is + + Change with currency effect + Change with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - Test - Test + + Performance with currency effect + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Date Range - Date Range + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - libs/ui/src/lib/assistant/assistant.html - 93 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Permission - Permission + + Buy and sell + Comprar y vender - apps/client/src/app/components/access-table/access-table.component.html - 17 + libs/ui/src/lib/i18n.ts + 8 + + + Delete Activities + Delete Activities - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 - - Restricted view - Restricted view + + Internationalization + Internacionalización - apps/client/src/app/components/access-table/access-table.component.html - 25 + apps/client/src/app/app-routing.module.ts + 79 + + + Do you really want to close your Ghostfolio account? + ¿Estás seguro de querer borrar tu cuenta de Ghostfolio? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Oops! Could not grant access. - Oops! Could not grant access. + + Danger Zone + Zona peligrosa - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Private - Private + + Close Account + Eliminar cuenta - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Job Queue - Job Queue + + By ETF Holding + By ETF Holding - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Market data is delayed for - Market data is delayed for + + Join now or check out the example account + Join now or check out the example account - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Investment - Investment + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 + + + Show more + Mostrar más - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 - - Absolute Asset Performance - Absolute Asset Performance + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Asset Performance - Asset Performance + + Delete Profiles + Borrar Perfiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 - - Absolute Currency Performance - Absolute Currency Performance + + Do you really want to delete these profiles? + Estas seguro de borrar estos perfiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Currency Performance - Currency Performance + + Oops! Could not delete profiles. + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Absolute Net Performance - Absolute Net Performance + + Table + Tabla - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Net Performance - Net Performance + + Chart + Grafico - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Week to date - Week to date + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/public/public-page.html + 155 - - WTD - WTD + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Month to date - Month to date + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - MTD - MTD + + Budgeting + Budgeting - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - Year to date - Year to date + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - View - View + + Family Office + Family Office - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Investor + Investor - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Personal Finance + Personal Finance - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Reset Filters - Reset Filters + + Privacy + Privacy - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year - year + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - years - years + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Asset Classes - Asset Classes + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Apply Filters - Apply Filters + + Wealth + Wealth - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Data Gathering - Data Gathering + + Wealth Management + Wealth Management - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - General - General + + Australia + Australia - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 72 - - Cloud - Cloud + + Austria + Austria - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 73 + + + Belgium + Belgium - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 74 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 75 + + + Canada + Canada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - self-hosting - self-hosting + + Czech Republic + Czech Republic - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 77 - - FAQ - FAQ + + Finland + Finland - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 78 + + + France + France - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Germany + Germany - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 80 - - My Account - My Account + + India + India - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 81 - - Active - Active + + Italy + Italy - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 82 - - Closed - Closed + + Netherlands + Netherlands - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 84 - - Activity - Activity + + New Zealand + New Zealand - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 85 - - Dividend Yield - Dividend Yield + + Poland + Poland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 86 - - Execute Job - Execute Job + + Romania + Romania - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 87 - - Priority - Priority + + South Africa + South Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 88 - - This action is not allowed. - This action is not allowed. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 90 - - Liquidity - Liquidity + + United States + United States libs/ui/src/lib/i18n.ts - 44 + 91 - - Change with currency effect - Change with currency effect + + Error + Error - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Performance with currency effect - Performance with currency effect + + Deactivate + Deactivate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 67 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Activate + Activate - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 69 - - Buy and sell - Buy and sell + + Inactive + Inactive + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 + + + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Delete Activities + + Close + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalization + + Yes + Yes - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 42d95247f..ce7cc241b 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1,12 +1,12 @@ - + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - Le risque de perte en investissant peut être important. Il est déconseillé d'investir de l'argent dont vous pourriez avoir besoin à court terme. + Le risque de perte en investissant peut être important. Il est déconseillé d’investir de l’argent dont vous pourriez avoir besoin à court terme. apps/client/src/app/app.component.html - 182 + 199 @@ -14,7 +14,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 3 + 4 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -26,7 +26,7 @@ Bénéficiaire apps/client/src/app/components/access-table/access-table.component.html - 10 + 11 @@ -34,7 +34,7 @@ Type apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + 31 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -42,7 +42,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + 15 libs/ui/src/lib/activities-table/activities-table.component.html @@ -54,7 +54,7 @@ Détails apps/client/src/app/components/access-table/access-table.component.html - 32 + 33 @@ -62,7 +62,7 @@ Révoquer apps/client/src/app/components/access-table/access-table.component.html - 59 + 62 @@ -70,7 +70,7 @@ Voulez-vous vraiment révoquer cet accès ? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 56 @@ -82,7 +82,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + 86 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -102,11 +102,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + 119 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + 152 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -114,15 +114,15 @@ apps/client/src/app/components/admin-users/admin-users.html - 134 + 135 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + 225 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -134,15 +134,15 @@ Nom apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 + 43 apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 + 228 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -150,7 +150,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + 15 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -158,7 +158,7 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + 15 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -166,7 +166,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + 138 libs/ui/src/lib/activities-table/activities-table.component.html @@ -176,13 +176,17 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 28 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + Total Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + 55 @@ -190,15 +194,15 @@ Devise apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + 65 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + 132 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + 235 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -206,7 +210,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + 144 libs/ui/src/lib/activities-table/activities-table.component.html @@ -222,7 +226,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + 136 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -234,43 +238,43 @@ Valeur apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + 171 apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + 206 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + 53 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 207 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + 210 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + 274 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + 277 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 280 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + 283 libs/ui/src/lib/account-balances/account-balances.component.html @@ -288,25 +292,29 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 74 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + Edit Modifier apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 278 apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + 215 apps/client/src/app/components/admin-overview/admin-overview.html - 80 + 78 apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + 92 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -322,27 +330,27 @@ Supprimer apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + 288 apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 + 236 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 64 apps/client/src/app/components/admin-overview/admin-overview.html - 90 + 88 apps/client/src/app/components/admin-overview/admin-overview.html - 199 + 205 apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + 102 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -362,7 +370,7 @@ Voulez-vous vraiment supprimer ce compte ? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + 110 @@ -370,23 +378,23 @@ Symbole apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 + 44 apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + 46 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + 117 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + 36 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + 305 @@ -394,19 +402,19 @@ Source Données apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + 53 apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + 77 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 127 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + 154 @@ -414,7 +422,7 @@ Tentatives apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + 81 @@ -422,7 +430,7 @@ Créé apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + 90 @@ -430,7 +438,7 @@ Terminé apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + 99 @@ -438,7 +446,7 @@ Statut apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + 108 @@ -446,19 +454,19 @@ Supprimer Tâches apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + 149 Asset Profiles - Profil d'Actifs + Profil d’Actifs libs/ui/src/lib/assistant/assistant.html 67 - - Historical Market Data + + Historical Market Data Données de Marché Historiques apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -470,7 +478,7 @@ Voir Données apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + 164 @@ -478,7 +486,7 @@ Voir la Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + 171 @@ -486,7 +494,7 @@ Supprimer Tâche apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + 177 @@ -506,7 +514,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + 160 libs/ui/src/lib/account-balances/account-balances.component.html @@ -526,7 +534,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + 114 @@ -538,19 +546,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + 378 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + 43 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + 42 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 + 25 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -562,11 +570,11 @@ apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + 65 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + 427 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -582,19 +590,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + 385 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + 50 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + 49 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + 32 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -606,7 +614,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + 434 @@ -614,55 +622,55 @@ Filtrer par... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + 328 Asset Class - Classe d'Actifs + Classe d’Actifs apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + 86 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + 161 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + 245 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + 232 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + 354 Asset Sub Class - Sous-classe d'Actifs + Sous-classe d’Actifs apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + 95 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + 170 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + 258 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + 241 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + 370 @@ -670,15 +678,15 @@ Première Activité apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + 143 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 213 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -687,10 +695,10 @@ Activities Count - Nombre d'Activités + Nombre d’Activités apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 113 @@ -698,11 +706,11 @@ Données Historiques apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 122 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + 84 @@ -710,7 +718,7 @@ Nombre de Secteurs apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + 131 @@ -718,7 +726,7 @@ Nombre de Pays apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + 140 @@ -726,7 +734,7 @@ Obtenir les Données Récentes apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + 177 @@ -734,7 +742,7 @@ Obtenir toutes les Données apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + 180 @@ -742,7 +750,7 @@ Obtenir les Données du Profil apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + 183 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -762,11 +770,11 @@ Secteur apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + 187 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + 258 @@ -774,7 +782,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + 198 apps/client/src/app/components/admin-users/admin-users.html @@ -782,7 +790,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + 268 @@ -790,19 +798,19 @@ Secteurs apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 204 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + 329 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 274 apps/client/src/app/pages/public/public-page.html - 45 + 50 @@ -810,15 +818,15 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 214 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + 340 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + 286 @@ -826,7 +834,7 @@ Équivalence de Symboles apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + 292 @@ -834,7 +842,7 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + 365 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -842,7 +850,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + 339 @@ -850,7 +858,7 @@ Veuillez ajouter une devise : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + 125 @@ -858,7 +866,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + 152 @@ -866,7 +874,7 @@ Voulez-vous vraiment supprimer cette devise ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + 165 @@ -874,7 +882,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + 202 @@ -882,12 +890,12 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + 222 User Count - Nombre d'Utilisateurs + Nombre d’Utilisateurs apps/client/src/app/components/admin-overview/admin-overview.html 13 @@ -895,10 +903,10 @@ Activity Count - Nombre d'Activités + Nombre d’Activités apps/client/src/app/components/admin-overview/admin-overview.html - 23 + 19 @@ -906,7 +914,7 @@ par Utilisateur apps/client/src/app/components/admin-overview/admin-overview.html - 32 + 28 @@ -914,7 +922,7 @@ Taux de Conversion apps/client/src/app/components/admin-overview/admin-overview.html - 37 + 34 @@ -934,11 +942,15 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 + 393 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 + 383 libs/ui/src/lib/assistant/assistant.html @@ -958,7 +970,7 @@ Mode Lecture Seule apps/client/src/app/components/admin-overview/admin-overview.html - 123 + 124 @@ -966,7 +978,7 @@ Message Système apps/client/src/app/components/admin-overview/admin-overview.html - 145 + 148 @@ -974,7 +986,7 @@ Définir Message apps/client/src/app/components/admin-overview/admin-overview.html - 165 + 170 @@ -982,7 +994,7 @@ Codes promotionnels apps/client/src/app/components/admin-overview/admin-overview.html - 173 + 178 @@ -990,7 +1002,7 @@ Ajouter apps/client/src/app/components/admin-overview/admin-overview.html - 231 + 238 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1002,7 +1014,7 @@ Maintenance apps/client/src/app/components/admin-overview/admin-overview.html - 238 + 246 @@ -1010,7 +1022,7 @@ Vider le Cache apps/client/src/app/components/admin-overview/admin-overview.html - 242 + 250 @@ -1018,7 +1030,7 @@ Voulez-vous vraiment supprimer cet·te utilisateur·rice ? apps/client/src/app/components/admin-users/admin-users.component.ts - 113 + 125 @@ -1026,7 +1038,7 @@ Utilisateur apps/client/src/app/components/header/header.component.html - 230 + 221 @@ -1034,7 +1046,7 @@ Inscription apps/client/src/app/components/admin-users/admin-users.html - 96 + 97 @@ -1042,11 +1054,11 @@ Comptes apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 + 65 apps/client/src/app/components/admin-users/admin-users.html - 113 + 114 apps/client/src/app/components/header/header.component.html @@ -1054,11 +1066,11 @@ apps/client/src/app/components/header/header.component.html - 262 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -1074,15 +1086,15 @@ Engagement par Jour apps/client/src/app/components/admin-users/admin-users.html - 158 + 157 - + Last Request Dernière Requête apps/client/src/app/components/admin-users/admin-users.html - 183 + 181 @@ -1094,7 +1106,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 + 91 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1106,7 +1118,7 @@ Comparer avec... apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 + 18 @@ -1120,6 +1132,10 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts 41 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + Benchmark @@ -1146,7 +1162,7 @@ apps/client/src/app/components/header/header.component.html - 244 + 237 @@ -1158,7 +1174,7 @@ apps/client/src/app/components/header/header.component.html - 254 + 247 @@ -1166,11 +1182,11 @@ Contrôle Administrateur apps/client/src/app/components/header/header.component.html - 67 + 68 apps/client/src/app/components/header/header.component.html - 278 + 271 @@ -1178,15 +1194,15 @@ Ressources apps/client/src/app/app.component.html - 60 + 61 apps/client/src/app/components/header/header.component.html - 80 + 82 apps/client/src/app/components/header/header.component.html - 289 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -1198,7 +1214,7 @@ Prix apps/client/src/app/app.component.html - 86 + 94 apps/client/src/app/components/header/header.component.html @@ -1206,223 +1222,15 @@ apps/client/src/app/components/header/header.component.html - 301 + 294 apps/client/src/app/components/header/header.component.html - 370 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 @@ -1430,15 +1238,15 @@ À propos apps/client/src/app/app.component.html - 66 + 67 apps/client/src/app/components/header/header.component.html - 111 + 112 apps/client/src/app/components/header/header.component.html - 357 + 351 @@ -1446,7 +1254,7 @@ Moi apps/client/src/app/components/header/header.component.html - 211 + 203 @@ -1454,7 +1262,7 @@ Mon Ghostfolio apps/client/src/app/components/header/header.component.html - 269 + 262 @@ -1462,7 +1270,7 @@ À propos de Ghostfolio apps/client/src/app/components/header/header.component.html - 309 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1474,11 +1282,11 @@ Fonctionnalités apps/client/src/app/app.component.html - 73 + 76 apps/client/src/app/components/header/header.component.html - 344 + 338 apps/client/src/app/pages/features/features-page.html @@ -1494,7 +1302,7 @@ apps/client/src/app/components/header/header.component.html - 386 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1510,7 +1318,7 @@ Se connecter apps/client/src/app/components/header/header.component.html - 399 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1522,7 +1330,7 @@ Démarrer apps/client/src/app/components/header/header.component.html - 411 + 404 @@ -1534,7 +1342,7 @@ apps/client/src/app/components/header/header.component.ts - 229 + 231 @@ -1542,7 +1350,11 @@ Oups! Jeton de Sécurité Incorrect. apps/client/src/app/components/header/header.component.ts - 243 + 246 + + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 @@ -1550,7 +1362,7 @@ Gérer les Activités apps/client/src/app/components/home-holdings/home-holdings.html - 32 + 61 @@ -1558,11 +1370,11 @@ Peur apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts - 71 + 96 @@ -1570,11 +1382,11 @@ Avidité apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts - 72 + 97 @@ -1582,31 +1394,7 @@ derniers jours apps/client/src/app/components/home-market/home-market.html - 6 - - - - This feature requires a subscription. - Cette fonctionnalité requiert un Abonnement. - - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 - - - apps/client/src/app/core/http-response.interceptor.ts - 69 - - - - Upgrade Plan - Mettre à niveau l'Abonnement - - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 - - - apps/client/src/app/core/http-response.interceptor.ts - 72 + 7 @@ -1622,15 +1410,15 @@ Montant Total apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 + 141 Savings Rate - Taux d'Épargne + Taux d’Épargne apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 + 213 @@ -1640,6 +1428,10 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 10 @@ -1654,15 +1446,19 @@ apps/client/src/app/pages/landing/landing-page.html - 423 + 47 + + + apps/client/src/app/pages/landing/landing-page.html + 450 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 + 97 apps/client/src/app/pages/register/register-page.html - 29 + 30 apps/client/src/app/pages/webauthn/webauthn-page.html @@ -1722,7 +1518,7 @@ Investissement apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 168 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1750,7 +1546,7 @@ Performance Absolue Nette apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 + 126 @@ -1758,7 +1554,7 @@ Performance nette apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 + 141 @@ -1766,7 +1562,7 @@ Actifs Totaux apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 + 167 @@ -1774,15 +1570,15 @@ Biens apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 + 180 Emergency Fund - Fonds d'Urgence + Fonds d’Urgence apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 + 192 apps/client/src/app/pages/features/features-page.html @@ -1795,18 +1591,18 @@ Buying Power - Pouvoir d'Achat + Pouvoir d’Achat apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 + 252 Excluded from Analysis - Exclus de l'Analyse + Exclus de l’Analyse apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 + 264 @@ -1814,7 +1610,7 @@ Fortune apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 + 297 @@ -1822,7 +1618,7 @@ Performance annualisée apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 + 309 @@ -1830,11 +1626,11 @@ Dividende apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 + 181 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 + 343 apps/client/src/app/pages/features/features-page.html @@ -1842,19 +1638,19 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 + 271 Please enter the amount of your emergency fund: - Veuillez entrer le montant de votre fonds d'urgence : + Veuillez entrer le montant de votre fonds d’urgence : apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 + 58 @@ -1862,7 +1658,7 @@ Différence apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 + 65 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1874,7 +1670,7 @@ Prix Unitaire Moyen apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 + 103 @@ -1882,7 +1678,7 @@ Prix Minimum apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 + 130 @@ -1890,7 +1686,7 @@ Prix Maximum apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 + 146 @@ -1898,11 +1694,11 @@ Quantité apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 + 156 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 + 188 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1914,12 +1710,12 @@ Signaler une Erreur de Données apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 + 448 Today - Aujourd'hui + Aujourd’hui apps/client/src/app/components/toggle/toggle.component.ts 22 @@ -1982,7 +1778,7 @@ Cette fonctionnalité est momentanément indisponible. apps/client/src/app/core/http-response.interceptor.ts - 60 + 53 @@ -1990,11 +1786,11 @@ Veuillez réessayer plus tard. apps/client/src/app/core/http-response.interceptor.ts - 62 + 55 apps/client/src/app/core/http-response.interceptor.ts - 91 + 80 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2003,10 +1799,10 @@ Oops! Something went wrong. - Oups! Quelque chose s'est mal passé. + Oups! Quelque chose s’est mal passé. apps/client/src/app/core/http-response.interceptor.ts - 89 + 78 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2015,10 +1811,10 @@ Okay - D'accord + D’accord apps/client/src/app/core/http-response.interceptor.ts - 92 + 81 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2046,7 +1842,7 @@ Historique des modifications apps/client/src/app/app.component.html - 71 + 74 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -2058,7 +1854,7 @@ License apps/client/src/app/app.component.html - 80 + 85 apps/client/src/app/pages/about/license/license-page.html @@ -2082,7 +1878,7 @@ Politique de Vie Privée apps/client/src/app/app.component.html - 90 + 100 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -2102,7 +1898,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 + 38 @@ -2110,15 +1906,15 @@ Veuillez entrer votre code promotionnel : apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 + 118 Could not redeem coupon code - Le code promotionnel n'a pas pu être appliqué + Le code promotionnel n’a pas pu être appliqué apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 + 128 @@ -2126,7 +1922,7 @@ Le code promotionnel a été appliqué apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + 140 @@ -2134,7 +1930,7 @@ Rafraîchir apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 + 141 @@ -2142,7 +1938,7 @@ Voulez-vous vraiment supprimer cette méthode de connexion ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 + 252 @@ -2150,7 +1946,7 @@ Compte apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 + 85 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2170,11 +1966,11 @@ par an apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 33 apps/client/src/app/pages/pricing/pricing-page.html - 254 + 257 @@ -2182,7 +1978,7 @@ Essayer Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 + 40 @@ -2190,7 +1986,7 @@ Utiliser un Code Promotionnel apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + 54 @@ -2214,7 +2010,7 @@ Langue apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 + 48 @@ -2222,43 +2018,47 @@ Communauté apps/client/src/app/app.component.html - 105 + 118 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 77 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 83 apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 88 apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + 92 apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + 96 apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + 100 apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + 105 apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + 110 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 apps/client/src/app/pages/features/features-page.html - 256 + 259 @@ -2266,15 +2066,15 @@ Paramètres régionaux apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 + 123 Date and number format - Format de date et d'heure + Format de date et d’heure apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 125 @@ -2282,7 +2082,7 @@ Apparence apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 + 148 @@ -2290,7 +2090,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 + 162 @@ -2298,7 +2098,7 @@ Clair apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 + 163 @@ -2306,7 +2106,7 @@ Sombre apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 164 @@ -2314,11 +2114,11 @@ Mode Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 + 173 apps/client/src/app/pages/features/features-page.html - 190 + 191 @@ -2326,7 +2126,7 @@ Se connecter avec empreinte apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 + 191 @@ -2334,19 +2134,19 @@ Fonctionnalités expérimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 + 207 User ID - ID d'utilisateur + ID d’utilisateur apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 45 apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 + 224 @@ -2402,7 +2202,7 @@ Cash apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 + 226 @@ -2458,7 +2258,7 @@ Blog apps/client/src/app/app.component.html - 68 + 70 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -2466,15 +2266,15 @@ apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html @@ -2482,7 +2282,7 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + 196 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html @@ -2506,7 +2306,7 @@ apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + 253 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -2634,7 +2434,7 @@ Mettre à jour Activité apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 + 10 @@ -2642,7 +2442,7 @@ Ajouter Activité apps/client/src/app/components/home-overview/home-overview.html - 56 + 52 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2654,7 +2454,7 @@ Vente libs/ui/src/lib/i18n.ts - 37 + 40 @@ -2662,11 +2462,11 @@ Nom, symbole, ou ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 26 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + 124 @@ -2674,11 +2474,11 @@ Prix Unitaire apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 + 286 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2690,11 +2490,11 @@ Frais apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 306 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 330 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2711,7 +2511,7 @@ Import has been completed - L'import est terminé + L’import est terminé apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 128 @@ -2722,7 +2522,7 @@ Validation des données... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 + 234 @@ -2730,7 +2530,7 @@ Les formats de fichier suivants sont supportés : apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 + 90 @@ -2738,11 +2538,11 @@ Retour apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 + 144 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 + 178 @@ -2750,15 +2550,15 @@ Importer apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 + 110 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 + 153 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 + 186 @@ -2794,7 +2594,7 @@ Par Compte apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 + 286 @@ -2807,10 +2607,10 @@ By Asset Class - Par Classe d'Actifs + Par Classe d’Actifs apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 + 85 @@ -2818,7 +2618,7 @@ Par Position apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 + 107 @@ -2826,7 +2626,7 @@ Par Secteur apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 + 130 @@ -2834,7 +2634,7 @@ Par Continent apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 + 153 @@ -2842,7 +2642,7 @@ Par Pays apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 + 264 @@ -2850,11 +2650,11 @@ Régions apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 + 198 apps/client/src/app/pages/public/public-page.html - 76 + 87 @@ -2862,11 +2662,11 @@ Marchés Développés apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 + 222 apps/client/src/app/pages/public/public-page.html - 93 + 104 @@ -2874,11 +2674,11 @@ Marchés Émergents apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 + 231 apps/client/src/app/pages/public/public-page.html - 102 + 113 @@ -2886,11 +2686,11 @@ Autres marchés apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 + 240 apps/client/src/app/pages/public/public-page.html - 111 + 122 @@ -2914,7 +2714,7 @@ libs/ui/src/lib/i18n.ts - 32 + 35 @@ -2922,7 +2722,7 @@ Dépôt libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 + 361 @@ -2946,7 +2746,7 @@ Haut apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 166 @@ -2954,7 +2754,7 @@ Bas apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 + 215 @@ -2962,7 +2762,7 @@ Évolution du Portefeuille apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 268 @@ -2970,7 +2770,7 @@ Historique des Investissements apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 + 296 @@ -2978,7 +2778,7 @@ Historique des Dividendes apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 + 354 @@ -3010,7 +2810,7 @@ Règle des 4% apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 + 40 @@ -3043,7 +2843,7 @@ Hello, has shared a Portfolio with you! - Bonjour, a partagé un Portefeuille avec vous ! + Bonjour, a partagé un Portefeuille avec vous ! apps/client/src/app/pages/public/public-page.html 4 @@ -3054,7 +2854,7 @@ Devises apps/client/src/app/pages/public/public-page.html - 30 + 32 @@ -3062,7 +2862,7 @@ Continents apps/client/src/app/pages/public/public-page.html - 60 + 68 @@ -3070,7 +2870,7 @@ Ghostfolio vous aide à garder un aperçu de votre patrimoine. apps/client/src/app/pages/public/public-page.html - 148 + 159 @@ -3078,11 +2878,11 @@ Démarrer apps/client/src/app/pages/features/features-page.html - 300 + 303 apps/client/src/app/pages/public/public-page.html - 153 + 164 @@ -3098,11 +2898,11 @@ Creér Compte apps/client/src/app/app.component.html - 18 + 13 apps/client/src/app/pages/register/register-page.html - 26 + 27 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3114,7 +2914,7 @@ Continue avec Internet Identity apps/client/src/app/pages/register/register-page.html - 41 + 42 @@ -3122,7 +2922,7 @@ Continuer avec Google apps/client/src/app/pages/register/register-page.html - 51 + 53 @@ -3159,7 +2959,7 @@ Oops, authentication has failed. - Oups, l'identification a échoué. + Oups, l’identification a échoué. apps/client/src/app/pages/webauthn/webauthn-page.html 19 @@ -3175,7 +2975,7 @@ Go back to Home Page - Retour à la Page d'Accueil + Retour à la Page d’Accueil apps/client/src/app/pages/webauthn/webauthn-page.html 31 @@ -3214,7 +3014,7 @@ Importer Activités apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 + 45 @@ -3262,7 +3062,7 @@ Voulez-vous vraiment supprimer cette activité ? libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + 235 @@ -3291,7 +3091,7 @@ Annual Interest Rate - Taux d'Intérêt Annuel + Taux d’Intérêt Annuel libs/ui/src/lib/fire-calculator/fire-calculator.component.html 21 @@ -3310,11 +3110,11 @@ Intérêt libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + 371 libs/ui/src/lib/i18n.ts - 34 + 37 @@ -3322,7 +3122,7 @@ Épargne libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 381 @@ -3332,6 +3132,10 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 98 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + Show all @@ -3351,7 +3155,7 @@ Asset Class - Classe d'Actifs + Classe d’Actifs libs/ui/src/lib/i18n.ts 6 @@ -3359,7 +3163,7 @@ Asset Sub Class - Sous-classe d'Actifs + Sous-classe d’Actifs libs/ui/src/lib/i18n.ts 7 @@ -3367,10 +3171,10 @@ Emergency Fund - Fonds d'Urgence + Fonds d’Urgence libs/ui/src/lib/i18n.ts - 13 + 15 @@ -3378,11 +3182,11 @@ Autre libs/ui/src/lib/i18n.ts - 21 + 23 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + 403 @@ -3390,7 +3194,7 @@ Symbole libs/ui/src/lib/i18n.ts - 25 + 27 @@ -3398,7 +3202,7 @@ Étiquette libs/ui/src/lib/i18n.ts - 26 + 28 @@ -3406,7 +3210,7 @@ Cash libs/ui/src/lib/i18n.ts - 40 + 43 @@ -3414,7 +3218,7 @@ Marchandise libs/ui/src/lib/i18n.ts - 41 + 44 @@ -3422,7 +3226,7 @@ Capital libs/ui/src/lib/i18n.ts - 42 + 45 @@ -3430,7 +3234,7 @@ Revenu Fixe libs/ui/src/lib/i18n.ts - 43 + 46 @@ -3438,7 +3242,7 @@ Immobilier libs/ui/src/lib/i18n.ts - 45 + 48 @@ -3446,7 +3250,7 @@ Obligation libs/ui/src/lib/i18n.ts - 48 + 51 @@ -3454,7 +3258,7 @@ Cryptomonnaie libs/ui/src/lib/i18n.ts - 49 + 52 @@ -3462,7 +3266,7 @@ ETF libs/ui/src/lib/i18n.ts - 50 + 53 @@ -3470,7 +3274,7 @@ SICAV libs/ui/src/lib/i18n.ts - 51 + 54 @@ -3478,7 +3282,7 @@ Métal Précieux libs/ui/src/lib/i18n.ts - 52 + 55 @@ -3486,7 +3290,7 @@ Capital Propre libs/ui/src/lib/i18n.ts - 53 + 56 @@ -3494,7 +3298,7 @@ Action libs/ui/src/lib/i18n.ts - 54 + 57 @@ -3502,7 +3306,7 @@ Afrique libs/ui/src/lib/i18n.ts - 61 + 64 @@ -3510,7 +3314,7 @@ Asie libs/ui/src/lib/i18n.ts - 62 + 65 @@ -3518,7 +3322,7 @@ Europe libs/ui/src/lib/i18n.ts - 63 + 66 @@ -3526,7 +3330,7 @@ Amérique du Nord libs/ui/src/lib/i18n.ts - 64 + 67 @@ -3534,7 +3338,7 @@ Océanie libs/ui/src/lib/i18n.ts - 65 + 68 @@ -3542,12 +3346,12 @@ Amérique du Sud libs/ui/src/lib/i18n.ts - 66 + 69 Time to add your first activity. - Il est temps d'ajouter votre première activité. + Il est temps d’ajouter votre première activité. libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html 12 @@ -3558,11 +3362,11 @@ Pas de données disponibles libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + 405 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + 418 @@ -3570,7 +3374,7 @@ Position apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 + 32 @@ -3578,7 +3382,7 @@ Charger Dividendes apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 + 68 @@ -3599,7 +3403,7 @@ Valid until - Valide jusqu'au + Valide jusqu’au libs/ui/src/lib/membership-card/membership-card.component.html 23 @@ -3610,7 +3414,7 @@ Core libs/ui/src/lib/i18n.ts - 9 + 10 @@ -3618,7 +3422,7 @@ Donner libs/ui/src/lib/i18n.ts - 14 + 17 @@ -3626,7 +3430,7 @@ Risque élevé libs/ui/src/lib/i18n.ts - 15 + 18 @@ -3634,7 +3438,7 @@ Risque faible libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3642,7 +3446,7 @@ Réserve pour retraite libs/ui/src/lib/i18n.ts - 23 + 25 @@ -3650,7 +3454,7 @@ Satellite libs/ui/src/lib/i18n.ts - 24 + 26 @@ -3666,7 +3470,7 @@ Expérience sans distraction pour les périodes tumultueuses apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + 174 @@ -3674,12 +3478,12 @@ Avant-première de fonctionnalités futures apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 208 Are you an ambitious investor who needs the full picture? - Êtes-vous un investisseur ambitieux qui a besoin d'une vue complète ? + Êtes-vous un investisseur ambitieux qui a besoin d’une vue complète ? apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 12 @@ -3694,11 +3498,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 55 + 57 apps/client/src/app/pages/pricing/pricing-page.html - 199 + 203 @@ -3710,11 +3514,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 63 + 65 apps/client/src/app/pages/pricing/pricing-page.html - 207 + 211 @@ -3726,27 +3530,27 @@ apps/client/src/app/pages/pricing/pricing-page.html - 67 + 69 apps/client/src/app/pages/pricing/pricing-page.html - 211 + 215 and more Features... - et d'autres fonctionnalités... + et d’autres fonctionnalités... apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 42 apps/client/src/app/pages/pricing/pricing-page.html - 83 + 85 apps/client/src/app/pages/pricing/pricing-page.html - 231 + 235 @@ -3759,10 +3563,10 @@ Upgrade Plan - Mettre à niveau l'Abonnement + Mettre à niveau l’Abonnement apps/client/src/app/components/header/header.component.html - 182 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3770,19 +3574,19 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + 16 apps/client/src/app/pages/pricing/pricing-page.html - 268 + 271 For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - Pour les investisseurs à l'aise avec la technologie qui préfèrent héberger Ghostfolio sur leur propre infrastructure. + Pour les investisseurs à l’aise avec la technologie qui préfèrent héberger Ghostfolio sur leur propre infrastructure. apps/client/src/app/pages/pricing/pricing-page.html - 36 + 38 @@ -3790,15 +3594,15 @@ Transactions Illimitées apps/client/src/app/pages/pricing/pricing-page.html - 43 + 45 apps/client/src/app/pages/pricing/pricing-page.html - 126 + 129 apps/client/src/app/pages/pricing/pricing-page.html - 187 + 191 @@ -3806,15 +3610,15 @@ Comptes illimités apps/client/src/app/pages/pricing/pricing-page.html - 47 + 49 apps/client/src/app/pages/pricing/pricing-page.html - 130 + 133 apps/client/src/app/pages/pricing/pricing-page.html - 191 + 195 @@ -3822,15 +3626,15 @@ Performance du Portefeuille apps/client/src/app/pages/pricing/pricing-page.html - 51 + 53 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 137 apps/client/src/app/pages/pricing/pricing-page.html - 195 + 199 @@ -3838,7 +3642,7 @@ Hébergé localement, mises à jour manuelles. apps/client/src/app/pages/pricing/pricing-page.html - 92 + 94 @@ -3846,11 +3650,11 @@ Gratuit apps/client/src/app/pages/pricing/pricing-page.html - 93 + 95 apps/client/src/app/pages/pricing/pricing-page.html - 150 + 153 @@ -3858,7 +3662,7 @@ Pour les nouveaux investisseurs qui débutent en Bourse. apps/client/src/app/pages/pricing/pricing-page.html - 120 + 123 @@ -3866,19 +3670,19 @@ Offre Ghostfolio cloud complètement administrée. apps/client/src/app/pages/pricing/pricing-page.html - 149 + 152 apps/client/src/app/pages/pricing/pricing-page.html - 240 + 244 For ambitious investors who need the full picture of their financial assets. - Pour les investisseurs ambitieux qui ont besoin d'une vue complète de leurs actifs financiers. + Pour les investisseurs ambitieux qui ont besoin d’une vue complète de leurs actifs financiers. apps/client/src/app/pages/pricing/pricing-page.html - 180 + 184 @@ -3889,20 +3693,20 @@ 280 - + Get Started - Débuter + Démarrer - apps/client/src/app/pages/pricing/pricing-page.html - 291 + apps/client/src/app/pages/landing/landing-page.html + 446 It’s free. - C'est gratuit. + C’est gratuit. apps/client/src/app/pages/pricing/pricing-page.html - 294 + 301 @@ -3910,7 +3714,7 @@ Frais apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 + 203 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3918,7 +3722,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 + 176 @@ -3930,20 +3734,20 @@ apps/client/src/app/pages/features/features-page.html - 160 + 161 apps/client/src/app/pages/pricing/pricing-page.html - 59 + 61 apps/client/src/app/pages/pricing/pricing-page.html - 203 + 207 Savings Rate per Month - Taux d'Épargne mensuel + Taux d’Épargne mensuel libs/ui/src/lib/fire-calculator/fire-calculator.component.html 10 @@ -3954,15 +3758,15 @@ Import et Export de Données apps/client/src/app/pages/pricing/pricing-page.html - 71 + 73 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 141 apps/client/src/app/pages/pricing/pricing-page.html - 215 + 219 @@ -3970,7 +3774,7 @@ Passez à Ghostfolio Premium facilement libs/ui/src/lib/i18n.ts - 11 + 13 @@ -3978,7 +3782,7 @@ Support de la Communauté apps/client/src/app/pages/pricing/pricing-page.html - 88 + 90 @@ -3986,7 +3790,7 @@ Support par E-mail et Tchat apps/client/src/app/pages/pricing/pricing-page.html - 236 + 240 @@ -3994,7 +3798,7 @@ Passez à Ghostfolio Premium ou Ghostfolio Open Source facilement libs/ui/src/lib/i18n.ts - 10 + 12 @@ -4002,7 +3806,7 @@ Passez à Ghostfolio Open Source ou Ghostfolio Basic facilement libs/ui/src/lib/i18n.ts - 12 + 14 @@ -4013,12 +3817,12 @@ 2 - + Oops! Could not get the historical exchange rate from - Oups ! Nous n'avons pas pu obtenir le taux de change historique à partir de + Oups ! Nous n’avons pas pu obtenir le taux de change historique à partir de apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 + 240 @@ -4046,7 +3850,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 226 + 230 @@ -4059,14 +3863,14 @@ Renew Plan - Renouveler l'Abonnement + Renouveler l’Abonnement apps/client/src/app/components/header/header.component.html - 190 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 + 21 apps/client/src/app/pages/pricing/pricing-page.html @@ -4075,7 +3879,7 @@ Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - Notre offre Ghostfolio Premium cloud est la manière la plus simple de débuter. Grâce au temps qu'elle économise, ce sera la meilleure option pour la plupart des gens. Les revenus sont utilisés pour couvrir les frais d'infrastructures et financer le développement continu de Ghostfolio. + Notre offre Ghostfolio Premium cloud est la manière la plus simple de débuter. Grâce au temps qu’elle économise, ce sera la meilleure option pour la plupart des gens. Les revenus sont utilisés pour couvrir les frais d’infrastructures et financer le développement continu de Ghostfolio. apps/client/src/app/pages/pricing/pricing-page.html 6 @@ -4086,15 +3890,15 @@ Voir en tant que ... apps/client/src/app/components/admin-users/admin-users.html - 222 + 218 Delete User - Supprimer l'Utilisateur + Supprimer l’Utilisateur apps/client/src/app/components/admin-users/admin-users.html - 232 + 229 @@ -4102,15 +3906,15 @@ Voulez-vous vraiment supprimer toutes vos activités ? libs/ui/src/lib/activities-table/activities-table.component.ts - 216 + 225 By ETF Provider - Par Émetteur d'ETF + Par Émetteur d’ETF apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 + 306 @@ -4118,7 +3922,7 @@ Mettre à jour la Plateforme apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 + 8 @@ -4126,7 +3930,7 @@ Ajouter une Plateforme apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + 10 @@ -4134,15 +3938,15 @@ Lien apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 + 352 apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 + 51 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + 25 @@ -4150,7 +3954,7 @@ Voulez-vous vraiment supprimer cette plateforme ? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 + 86 @@ -4166,7 +3970,7 @@ Mettre à jour le Solde apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 + 112 @@ -4179,7 +3983,7 @@ Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Mettez à niveau vers Ghostfolio Premium aujourd'hui et gagnez accès à des fonctionnalités exclusives pour améliorer votre expérience d'investissement: + Mettez à niveau vers Ghostfolio Premium aujourd’hui et gagnez accès à des fonctionnalités exclusives pour améliorer votre expérience d’investissement: apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 15 @@ -4187,7 +3991,7 @@ Get the tools to effectively manage your finances and refine your personal investment strategy. - Obtenez les outils pour gérer efficacement vos finances et affinez votre stratégie d'investissement personnelle. + Obtenez les outils pour gérer efficacement vos finances et affinez votre stratégie d’investissement personnelle. apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 45 @@ -4234,7 +4038,7 @@ Cette activité existe déjà. libs/ui/src/lib/i18n.ts - 16 + 19 @@ -4242,7 +4046,7 @@ Gérer les Références apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 + 35 @@ -4258,7 +4062,7 @@ Selectionner un Fichier apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 + 22 @@ -4266,7 +4070,7 @@ Selectionner les Dividendes apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + 113 @@ -4274,7 +4078,7 @@ Selectionner les Activités apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 + 115 @@ -4306,7 +4110,7 @@ Finance Personnelle apps/client/src/app/app.component.html - 55 + 54 @@ -4314,7 +4118,7 @@ Questions Fréquentes (FAQ) apps/client/src/app/app.component.html - 76 + 80 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -4326,7 +4130,7 @@ Série en cours apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 + 317 @@ -4334,7 +4138,7 @@ Série la plus longue apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 + 326 @@ -4342,7 +4146,7 @@ Mois libs/ui/src/lib/i18n.ts - 20 + 22 @@ -4350,7 +4154,7 @@ Années libs/ui/src/lib/i18n.ts - 28 + 30 @@ -4358,7 +4162,7 @@ Mois libs/ui/src/lib/i18n.ts - 19 + 21 @@ -4366,7 +4170,7 @@ Année libs/ui/src/lib/i18n.ts - 27 + 29 @@ -4374,7 +4178,7 @@ Dettes apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 + 279 apps/client/src/app/pages/features/features-page.html @@ -4474,7 +4278,7 @@ Mode Sombre apps/client/src/app/pages/features/features-page.html - 177 + 178 @@ -4482,7 +4286,7 @@ Sentiment du Marché apps/client/src/app/pages/features/features-page.html - 205 + 206 @@ -4490,7 +4294,7 @@ Analyse statique apps/client/src/app/pages/features/features-page.html - 224 + 225 @@ -4498,7 +4302,7 @@ Multi-Langue apps/client/src/app/pages/features/features-page.html - 241 + 242 @@ -4506,7 +4310,7 @@ Logiciel Open Source apps/client/src/app/pages/features/features-page.html - 275 + 278 @@ -4514,7 +4318,7 @@ Dette libs/ui/src/lib/i18n.ts - 36 + 39 @@ -4522,7 +4326,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + 304 @@ -4543,7 +4347,7 @@ Discover Open Source Alternatives for Personal Finance Tools - Discover Open Source Alternatives for Personal Finance Tools + Découvrez les alternatives Open Source pour les outils de finance personnelle apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 4 @@ -4551,11026 +4355,2666 @@ Founded - Founded + Fondée - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 72 + + + Origin + L’origine - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region + La région - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in + Disponible en - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes + ✅ Oui - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No + ❌ Non - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously + Utilisation anonyme - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan + Plan gratuit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Notes + Notes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Personal Finance Tools + Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Guides + Guides - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 22 + + + Glossary + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Stocks, ETFs, bonds, cryptocurrencies, commodities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + Mortgages, personal loans, credit cards + Mortgages, personal loans, credit cards - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + Luxury items, real estate, private companies + Luxury items, real estate, private companies - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Buy + Buy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 34 + + + Valuable + Valuable - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 38 + + + ETFs without Countries + ETFs without Countries - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + ETFs without Sectors + ETFs without Sectors - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 + + + Assets + Assets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + Preset + Preset - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 24 + + + By Market + By Market - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Asia-Pacific + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 5 + + + Japan + Japan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 83 + + + Welcome to Ghostfolio + Welcome to Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Setup your accounts + Setup your accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Get a comprehensive financial overview by adding your bank and brokerage accounts. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + Capture your activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Record your investment activities to keep your portfolio up to date. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Monitor and analyze your portfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Track your progress in real-time with comprehensive analysis and insights. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + No data available + No data available - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Ready to take control of your personal finances? + Ready to take control of your personal finances? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 8 - - Origin - Origin + + Setup accounts + Setup accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/home-overview/home-overview.html + 44 + + + Biometric Authentication + Biometric Authentication - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 6 + + + Active Users + Active Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 62 + + + New Users + New Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 51 + + + Users in Slack community + Users in Slack community - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 75 + + + Contributors on GitHub + Contributors on GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 89 + + + Stars on GitHub + Stars on GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 103 + + + Pulls on Docker Hub + Pulls on Docker Hub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 106 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 117 + + + Uptime + Uptime - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 132 + + + Export Data + Export Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 + + + Currencies + Currencies - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 + + + Our + Our - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + Visit + Visit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + Discover other exciting Open Source Software projects + Discover other exciting Open Source Software projects - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + Frequently Asked Questions (FAQ) + Frequently Asked Questions (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 + + + Check out the numerous features of Ghostfolio to manage your wealth + Check out the numerous features of Ghostfolio to manage your wealth - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/features/features-page.html + 6 + + + Discover the latest Ghostfolio updates and insights on personal finance + Discover the latest Ghostfolio updates and insights on personal finance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + Manage your wealth like a boss + Manage your wealth like a boss - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started + Démarrer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Monthly Active Users + Monthly Active Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 70 + + + As seen in + As seen in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + Protect your assets. Refine your personal investment strategy. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 229 + + + 360° View + 360° View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Web3 Ready + Web3 Ready - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + Use Ghostfolio anonymously and own your financial data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source + Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. + Benefit from continuous improvements through a strong community. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + Why Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 272 + + + Ghostfolio is for you if you are... + Ghostfolio is for you if you are... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + trading stocks, ETFs or cryptocurrencies on multiple platforms - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy + pursuing a buy & hold strategy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition + interested in getting insights of your portfolio composition - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership + valuing privacy and data ownership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism + into minimalism - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 299 + + + caring about diversifying your financial resources + caring about diversifying your financial resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence + interested in financial independence - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in + saying no to spreadsheets in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list + still reading this list - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio + Learn more about Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 319 + + + What our users are saying + What our users are saying - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + Members from around the globe are using Ghostfolio Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + How does Ghostfolio work? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Sign up anonymously* + Sign up anonymously* - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 392 - - Region - Region + + * no e-mail address nor credit card required + * no e-mail address nor credit card required - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 394 + + + Add any of your historical transactions + Add any of your historical transactions - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 405 + + + Get valuable insights of your portfolio composition + Get valuable insights of your portfolio composition - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 417 + + + Are you ready? + Are you ready? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 431 + + + Live Demo + Live Demo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 49 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 451 + + + Get the full picture of your personal finances across multiple platforms. + Get the full picture of your personal finances across multiple platforms. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - Available in - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ Yes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - Self-Hosting - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - Use anonymously - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - Free Plan - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Notes - Notes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - - Personal Finance Tools - Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - - Guides - Guides - - apps/client/src/app/pages/resources/resources-page.html - 22 - - - - Glossary - Glossary - - apps/client/src/app/pages/resources/resources-page.html - 92 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - Luxury items, real estate, private companies - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Buy - Buy - - libs/ui/src/lib/i18n.ts - 31 - - - - Valuable - Valuable - - libs/ui/src/lib/i18n.ts - 35 - - - - ETFs without Countries - ETFs without Countries - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 - - - - ETFs without Sectors - ETFs without Sectors - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 - - - - Assets - Assets - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 - - - - Preset - Preset - - libs/ui/src/lib/i18n.ts - 22 - - - - By Market - By Market - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Asia-Pacific - Asia-Pacific - - libs/ui/src/lib/i18n.ts - 5 - - - - Japan - Japan - - libs/ui/src/lib/i18n.ts - 17 - - - - Welcome to Ghostfolio - Welcome to Ghostfolio - - apps/client/src/app/components/home-overview/home-overview.html - 7 - - - - Setup your accounts - Setup your accounts - - apps/client/src/app/components/home-overview/home-overview.html - 15 - - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Get a comprehensive financial overview by adding your bank and brokerage accounts. - - apps/client/src/app/components/home-overview/home-overview.html - 17 - - - - Capture your activities - Capture your activities - - apps/client/src/app/components/home-overview/home-overview.html - 24 - - - - Record your investment activities to keep your portfolio up to date. - Record your investment activities to keep your portfolio up to date. - - apps/client/src/app/components/home-overview/home-overview.html - 26 - - - - Monitor and analyze your portfolio - Monitor and analyze your portfolio - - apps/client/src/app/components/home-overview/home-overview.html - 33 - - - - Track your progress in real-time with comprehensive analysis and insights. - Track your progress in real-time with comprehensive analysis and insights. - - apps/client/src/app/components/home-overview/home-overview.html - 35 - - - - No data available - No data available - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - Ready to take control of your personal finances? - Ready to take control of your personal finances? - - apps/client/src/app/components/home-overview/home-overview.html - 8 - - - - Setup accounts - Setup accounts - - apps/client/src/app/components/home-overview/home-overview.html - 48 - - - - Biometric Authentication - Biometric Authentication - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - - apps/client/src/app/pages/open/open-page.html - 6 - - - - Active Users - Active Users - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - New Users - New Users - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Users in Slack community - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - Contributors on GitHub - - apps/client/src/app/pages/open/open-page.html - 89 - - - - Stars on GitHub - Stars on GitHub - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - Pulls on Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - Uptime - Uptime - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Export Data - Export Data - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - Currencies - Currencies - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 - - - - Our - Our - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Visit - Visit - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Discover other exciting Open Source Software projects - Discover other exciting Open Source Software projects - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Check out the numerous features of Ghostfolio to manage your wealth - Check out the numerous features of Ghostfolio to manage your wealth - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Discover the latest Ghostfolio updates and insights on personal finance - Discover the latest Ghostfolio updates and insights on personal finance - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - Manage your wealth like a boss - Manage your wealth like a boss - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - Get Started - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - or - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Monthly Active Users - Monthly Active Users - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - As seen in - As seen in - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - Protect your assets. Refine your personal investment strategy. - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - 360° View - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Web3 Ready - Web3 Ready - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - Use Ghostfolio anonymously and own your financial data. - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - Open Source - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - Benefit from continuous improvements through a strong community. - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - Why Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - Ghostfolio is for you if you are... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - pursuing a buy & hold strategy - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - valuing privacy and data ownership - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - into minimalism - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - caring about diversifying your financial resources - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - interested in financial independence - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - saying no to spreadsheets in - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - still reading this list - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - Learn more about Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - What our users are saying - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - How does Ghostfolio work? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Sign up anonymously* - Sign up anonymously* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - * no e-mail address nor credit card required - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - Add any of your historical transactions - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - Are you ready? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - Join now or check out the example account - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - Live Demo - Live Demo - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Get started in only 3 steps - Get started in only 3 steps - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - faq - foire-aux-questions - - apps/client/src/app/app.component.ts - 66 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 37 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 42 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 48 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 17 - - - - features - fonctionnalites - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/components/header/header.component.ts - 78 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 - - - - about - a-propos - - apps/client/src/app/app.component.ts - 59 - - - apps/client/src/app/app.component.ts - 60 - - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/app.component.ts - 63 - - - apps/client/src/app/components/header/header.component.ts - 77 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 - - - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - apps/client/src/app/pages/about/about-page.component.ts - 74 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 - - - - privacy-policy - politique-de-confidentialite - - apps/client/src/app/app.component.ts - 64 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - - license - licence - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - - markets - marches - - apps/client/src/app/app.component.ts - 68 - - - apps/client/src/app/components/header/header.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 - - - - pricing - prix - - apps/client/src/app/app.component.ts - 69 - - - apps/client/src/app/components/header/header.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 - - - apps/client/src/app/core/http-response.interceptor.ts - 83 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 - - - - register - enregistrement - - apps/client/src/app/app.component.ts - 70 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 - - - apps/client/src/app/pages/features/features-page.component.ts - 31 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 - - - - resources - ressources - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/components/header/header.component.ts - 81 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/features/features-page.component.ts - 32 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 19 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - Open Source Alternative to - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - The Open Source Alternative to - The Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - open-source-alternative-to - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - - Ready to take your investments to the next level? - Ready to take your investments to the next level? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - - Get Started - Get Started - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - - Switzerland - Switzerland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 - - - - Global - Global - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 - - - - United States - United States - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 - - - - Belgium - Belgium - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 - - - - Germany - Germany - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 - - - - Austria - Austria - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 - - - - Italy - Italy - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 - - - - Netherlands - Netherlands - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 - - - - Thailand - Thailand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 - - - - New Zealand - New Zealand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 - - - - Czech Republic - Czech Republic - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 - - - - (Last 24 hours) - (Last 24 hours) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - (Last 30 days) - (Last 30 days) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - (Last 90 days) - (Last 90 days) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Choose or drop a file here - Choose or drop a file here - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - You are using the Live Demo. - You are using the Live Demo. - - apps/client/src/app/app.component.html - 17 - - - - One-time fee, annual account fees - One-time fee, annual account fees - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - Distribution of corporate earnings - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Oops! Could not get the historical exchange rate from - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - Fee - - libs/ui/src/lib/i18n.ts - 33 - - - - Interest - Interest - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - Revenue for lending out money - Revenue for lending out money - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Add Tag - Add Tag - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - Do you really want to delete this tag? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - Update tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - Add tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - France - France - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - Currency Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - Account Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Transfer Cash Balance - Transfer Cash Balance - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Benchmark - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 - - - - Version - Version - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - Settings - Settings - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - From - From - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - To - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 - - - - Transfer - Transfer - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 - - - - Finland - Finland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 - - - - Membership - Membership - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 - - - - Access - Access - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 - - - - Find holding... - Find holding... - - libs/ui/src/lib/assistant/assistant.component.ts - 138 - - - - No entries... - No entries... - - libs/ui/src/lib/assistant/assistant.html - 63 - - - libs/ui/src/lib/assistant/assistant.html - 84 - - - - Asset Profile - Asset Profile - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 - - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 - - - - Search - Search - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Add Manually - Add Manually - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes. - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - Last All Time High - Last All Time High - - libs/ui/src/lib/benchmark/benchmark.component.html - 65 - - - - User - User - - apps/client/src/app/components/admin-users/admin-users.html - 29 - - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - - Canada - Canada - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 - - - - Open Source Wealth Management Software - Open Source Wealth Management Software - - apps/client/src/app/pages/i18n/i18n-page.html - 14 - - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 - - - - Poland - Poland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 - - - - South Africa - South Africa - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 + apps/client/src/app/pages/landing/landing-page.html + 242 - - Extreme Fear - Extreme Fear + + Get started in only 3 steps + Get started in only 3 steps - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/landing/landing-page.html + 386 - - Extreme Greed - Extreme Greed + + faq + foire-aux-questions - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/app.component.ts + 67 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/core/paths.ts + 3 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - - - 200-Day Trend - 200-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - - - Cash Balances - Cash Balances - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 - - - Starting from - Starting from + + + features + fonctionnalites - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + about + a-propos - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 64 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 83 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 2 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 50 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 74 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/landing/landing-page.component.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + privacy-policy + politique-de-confidentialite - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + license + licence - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + marches - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + prix - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + register + enregistrement - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 71 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 + + + resources + ressources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 82 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore the links below to compare a variety of personal finance tools with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Alternative open source à - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Alternative open source à - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + The Open Source Alternative to + L’alternative open source à - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + open-source-alternative-to + alternative-open-source-a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? + Ready to take your investments to the next level? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Get Started + Démarrer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 89 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 16 + + + (Last 24 hours) + (Last 24 hours) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Last 30 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Last 90 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 - - year - year + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Oops! Could not get the historical exchange rate from + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 36 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks + Account Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + Find holding... + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profile + Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Search + Search - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Add Manually - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + User + User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs tableau comparatif - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 95 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 98 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + is an invalid currency! + is an invalid currency! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + The current market price is + The current market price is - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + Test + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + Date Range + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 93 + + + Permission + Permission - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + Restricted view + Restricted view - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + Oops! Could not grant access. + Oops! Could not grant access. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + Private + Private - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Job Queue + Job Queue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + Market data is delayed for + Market data is delayed for - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + Investment + Investment - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + Absolute Asset Performance + Absolute Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + Asset Performance + Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + Absolute Currency Performance + Absolute Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + Currency Performance + Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + Absolute Net Performance + Absolute Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Net Performance + Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + Week to date + Week to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + Month to date + Month to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + Year to date + Year to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + View + View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + Oops! A data provider is experiencing the hiccups. + Oops! A data provider is experiencing the hiccups. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + Reset Filters + Reset Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 155 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + years + years - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Asset Classes + Asset Classes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 138 + + + Apply Filters + Apply Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 165 + + + Data Gathering + Data Gathering - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + General + General - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + Cloud + Cloud - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + self-hosting + self-hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + FAQ + FAQ - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! It looks like you’re making too many requests. Please slow down a bit. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + My Account + My Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Active + Active - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Closed + Closed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + Activity + Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + Dividend Yield + Dividend Yield - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + Execute Job + Execute Job - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + Priority + Priority - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - is an invalid currency! - is an invalid currency! + + This action is not allowed. + This action is not allowed. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Liquidity + Liquidity - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + libs/ui/src/lib/i18n.ts + 47 - - The current market price is - The current market price is + + Change with currency effect + Change with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - Test - Test + + Performance with currency effect + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Date Range - Date Range + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - libs/ui/src/lib/assistant/assistant.html - 93 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Permission - Permission + + Buy and sell + Buy and sell - apps/client/src/app/components/access-table/access-table.component.html - 17 + libs/ui/src/lib/i18n.ts + 8 + + + Delete Activities + Delete Activities - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 - - Restricted view - Restricted view + + Internationalization + Internationalization - apps/client/src/app/components/access-table/access-table.component.html - 25 + apps/client/src/app/app-routing.module.ts + 79 + + + Do you really want to close your Ghostfolio account? + Do you really want to close your Ghostfolio account? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Oops! Could not grant access. - Oops! Could not grant access. + + Danger Zone + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Private - Private + + Close Account + Close Account - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Job Queue - Job Queue + + By ETF Holding + By ETF Holding - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Market data is delayed for - Market data is delayed for + + Join now or check out the example account + Join now or check out the example account - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Investment - Investment + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 + + + Show more + Show more - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 - - Absolute Asset Performance - Absolute Asset Performance + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Asset Performance - Asset Performance + + Delete Profiles + Delete Profiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 - - Absolute Currency Performance - Absolute Currency Performance + + Do you really want to delete these profiles? + Do you really want to delete these profiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Currency Performance - Currency Performance + + Oops! Could not delete profiles. + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Absolute Net Performance - Absolute Net Performance + + Table + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Net Performance - Net Performance + + Chart + Chart - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Week to date - Week to date + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/public/public-page.html + 155 - - WTD - WTD + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Month to date - Month to date + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - MTD - MTD + + Budgeting + Budgeting - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - Year to date - Year to date + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - View - View + + Family Office + Family Office - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Investor + Investor - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Personal Finance + Personal Finance - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Reset Filters - Reset Filters + + Privacy + Privacy - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year - year + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - years - years + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Asset Classes - Asset Classes + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Apply Filters - Apply Filters + + Wealth + Wealth - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Data Gathering - Data Gathering + + Wealth Management + Wealth Management - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - General - General + + Australia + Australia - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 72 - - Cloud - Cloud + + Austria + Austria - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 73 + + + Belgium + Belgium - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 74 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 75 + + + Canada + Canada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - self-hosting - self-hosting + + Czech Republic + Czech Republic - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 77 - - FAQ - FAQ + + Finland + Finland - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 78 + + + France + France - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Germany + Germany - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 80 - - My Account - My Account + + India + India - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 81 - - Active - Active + + Italy + Italy - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 82 - - Closed - Closed + + Netherlands + Netherlands - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 84 - - Activity - Activity + + New Zealand + New Zealand - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 85 - - Dividend Yield - Dividend Yield + + Poland + Poland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 86 - - Execute Job - Execute Job + + Romania + Romania - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 87 - - Priority - Priority + + South Africa + South Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 88 - - This action is not allowed. - This action is not allowed. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 90 - - Liquidity - Liquidity + + United States + United States libs/ui/src/lib/i18n.ts - 44 + 91 - - Change with currency effect - Change with currency effect + + Error + Error - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Performance with currency effect - Performance with currency effect + + Deactivate + Deactivate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 67 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Activate + Activate - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 69 - - Buy and sell - Buy and sell + + Inactive + Inactive + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 + + + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Delete Activities + + Close + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalization + + Yes + Yes - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index f59abcb67..e8fb9e562 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -7,23 +7,23 @@ Crea un account apps/client/src/app/app.component.html - 18 + 13 apps/client/src/app/pages/register/register-page.html - 26 + 27 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 - + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine. apps/client/src/app/app.component.html - 182 + 199 @@ -31,7 +31,7 @@ Beneficiario apps/client/src/app/components/access-table/access-table.component.html - 10 + 11 @@ -39,7 +39,7 @@ Tipo apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + 31 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -47,7 +47,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + 15 libs/ui/src/lib/activities-table/activities-table.component.html @@ -59,7 +59,7 @@ Dettagli apps/client/src/app/components/access-table/access-table.component.html - 32 + 33 @@ -67,15 +67,15 @@ Revoca apps/client/src/app/components/access-table/access-table.component.html - 59 + 62 Do you really want to revoke this granted access? - Vuoi davvero revocare l'accesso concesso? + Vuoi davvero revocare l’accesso concesso? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 56 @@ -91,11 +91,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + 119 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + 152 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -103,15 +103,15 @@ apps/client/src/app/components/admin-users/admin-users.html - 134 + 135 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + 225 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -123,15 +123,15 @@ Nome apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 + 43 apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 + 228 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -139,7 +139,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + 15 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -147,7 +147,7 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + 15 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -155,7 +155,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + 138 libs/ui/src/lib/activities-table/activities-table.component.html @@ -165,13 +165,17 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 28 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + Total Totale apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + 55 @@ -179,43 +183,43 @@ Valore apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + 171 apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + 206 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + 53 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 207 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + 210 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + 274 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + 277 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 280 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + 283 libs/ui/src/lib/account-balances/account-balances.component.html @@ -233,25 +237,29 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 74 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + Edit Modifica apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 278 apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + 215 apps/client/src/app/components/admin-overview/admin-overview.html - 80 + 78 apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + 92 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -267,27 +275,27 @@ Elimina apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + 288 apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 + 236 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 64 apps/client/src/app/components/admin-overview/admin-overview.html - 90 + 88 apps/client/src/app/components/admin-overview/admin-overview.html - 199 + 205 apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + 102 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -307,7 +315,7 @@ Vuoi davvero eliminare questo account? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + 110 @@ -315,7 +323,7 @@ Elimina i lavori apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + 149 @@ -323,23 +331,23 @@ Simbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 + 44 apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + 46 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + 117 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + 36 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + 305 @@ -347,19 +355,19 @@ Sorgente dei dati apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + 53 apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + 77 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 127 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + 154 @@ -367,7 +375,7 @@ Tentativi apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + 81 @@ -375,7 +383,7 @@ Creato apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + 90 @@ -383,7 +391,7 @@ Finito apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + 99 @@ -391,19 +399,19 @@ Stato apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + 108 Asset Profiles - Profilo dell'asset + Profilo dell’asset libs/ui/src/lib/assistant/assistant.html 67 - - Historical Market Data + + Historical Market Data Dati storici del mercato apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -415,7 +423,7 @@ Visualizza i dati apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + 164 @@ -423,7 +431,7 @@ Visualizza Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + 171 @@ -431,7 +439,7 @@ Elimina il lavoro apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + 177 @@ -451,7 +459,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + 160 libs/ui/src/lib/account-balances/account-balances.component.html @@ -471,7 +479,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + 114 @@ -483,19 +491,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + 378 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + 43 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + 42 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 + 25 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -507,11 +515,11 @@ apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + 65 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + 427 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -527,19 +535,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + 385 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + 50 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + 49 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + 32 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -551,7 +559,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + 434 @@ -559,15 +567,15 @@ Prima attività apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + 143 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 213 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -579,7 +587,7 @@ Conteggio attività apps/client/src/app/components/admin-overview/admin-overview.html - 23 + 19 @@ -587,11 +595,11 @@ Dati storici apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 122 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + 84 @@ -599,7 +607,7 @@ Aggiungi una valuta: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + 125 @@ -607,7 +615,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + 152 @@ -615,7 +623,7 @@ Vuoi davvero eliminare questa valuta? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + 165 @@ -623,7 +631,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + 202 @@ -631,7 +639,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + 222 @@ -647,7 +655,7 @@ per utente apps/client/src/app/components/admin-overview/admin-overview.html - 32 + 28 @@ -655,7 +663,7 @@ Raccogli dati recenti apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + 177 @@ -663,7 +671,7 @@ Raccogli tutti i dati apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + 180 @@ -671,7 +679,7 @@ Raccogli i dati del profilo apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + 183 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -683,7 +691,7 @@ Tassi di cambio apps/client/src/app/components/admin-overview/admin-overview.html - 37 + 34 @@ -699,7 +707,7 @@ Messaggio di sistema apps/client/src/app/components/admin-overview/admin-overview.html - 145 + 148 @@ -707,7 +715,7 @@ Imposta messaggio apps/client/src/app/components/admin-overview/admin-overview.html - 165 + 170 @@ -715,7 +723,7 @@ Modalità di sola lettura apps/client/src/app/components/admin-overview/admin-overview.html - 123 + 124 @@ -723,7 +731,7 @@ Buoni sconto apps/client/src/app/components/admin-overview/admin-overview.html - 173 + 178 @@ -731,7 +739,7 @@ Aggiungi apps/client/src/app/components/admin-overview/admin-overview.html - 231 + 238 libs/ui/src/lib/account-balances/account-balances.component.html @@ -743,7 +751,7 @@ Bilancio domestico apps/client/src/app/components/admin-overview/admin-overview.html - 238 + 246 @@ -751,7 +759,7 @@ Svuota la cache apps/client/src/app/components/admin-overview/admin-overview.html - 242 + 250 @@ -759,7 +767,7 @@ Vuoi davvero eliminare questo utente? apps/client/src/app/components/admin-users/admin-users.component.ts - 113 + 125 @@ -767,7 +775,7 @@ Utente apps/client/src/app/components/header/header.component.html - 230 + 221 @@ -775,7 +783,7 @@ Iscrizione apps/client/src/app/components/admin-users/admin-users.html - 96 + 97 @@ -783,20 +791,20 @@ Partecipazione giornaliera apps/client/src/app/components/admin-users/admin-users.html - 158 + 157 - + Last Request Ultima richiesta apps/client/src/app/components/admin-users/admin-users.html - 183 + 181 Current Market Mood - Stato d'animo attuale del mercato + Stato d’animo attuale del mercato apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html 12 @@ -811,7 +819,7 @@ apps/client/src/app/components/header/header.component.html - 244 + 237 @@ -823,7 +831,7 @@ apps/client/src/app/components/header/header.component.html - 254 + 247 @@ -831,11 +839,11 @@ Account apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 + 65 apps/client/src/app/components/admin-users/admin-users.html - 113 + 114 apps/client/src/app/components/header/header.component.html @@ -843,11 +851,11 @@ apps/client/src/app/components/header/header.component.html - 262 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -863,11 +871,11 @@ Controllo amministrativo apps/client/src/app/components/header/header.component.html - 67 + 68 apps/client/src/app/components/header/header.component.html - 278 + 271 @@ -875,15 +883,15 @@ Risorse apps/client/src/app/app.component.html - 60 + 61 apps/client/src/app/components/header/header.component.html - 80 + 82 apps/client/src/app/components/header/header.component.html - 289 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -895,7 +903,7 @@ Prezzi apps/client/src/app/app.component.html - 86 + 94 apps/client/src/app/components/header/header.component.html @@ -903,295 +911,87 @@ apps/client/src/app/components/header/header.component.html - 301 + 294 apps/client/src/app/components/header/header.component.html - 370 + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + About + Informazioni su - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 351 + + + Me + Io - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 203 + + + My Ghostfolio + Il mio Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 262 + + + About Ghostfolio + Informazioni su Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 303 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + Features + Funzionalità - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 76 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 338 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/features/features-page.html + 5 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - - About - Informazioni su - - apps/client/src/app/app.component.html - 66 - - - apps/client/src/app/components/header/header.component.html - 111 - - - apps/client/src/app/components/header/header.component.html - 357 - - - - Me - Io - - apps/client/src/app/components/header/header.component.html - 211 - - - - My Ghostfolio - Il mio Ghostfolio - - apps/client/src/app/components/header/header.component.html - 269 - - - - About Ghostfolio - Informazioni su Ghostfolio - - apps/client/src/app/components/header/header.component.html - 309 - - - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 - - - - Features - Funzionalità - - apps/client/src/app/app.component.html - 73 - - - apps/client/src/app/components/header/header.component.html - 344 - - - apps/client/src/app/pages/features/features-page.html - 5 - - - - Markets - Mercati + + + Markets + Mercati apps/client/src/app/app.component.html 58 apps/client/src/app/components/header/header.component.html - 386 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1207,11 +1007,11 @@ Inizia apps/client/src/app/pages/features/features-page.html - 300 + 303 apps/client/src/app/pages/public/public-page.html - 153 + 164 @@ -1223,7 +1023,7 @@ apps/client/src/app/components/header/header.component.ts - 229 + 231 @@ -1231,7 +1031,11 @@ Ops! Token di sicurezza errato. apps/client/src/app/components/header/header.component.ts - 243 + 246 + + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 @@ -1239,7 +1043,7 @@ Gestione delle attività apps/client/src/app/components/home-holdings/home-holdings.html - 32 + 61 @@ -1247,7 +1051,7 @@ Ultimi giorni apps/client/src/app/components/home-market/home-market.html - 6 + 7 @@ -1265,6 +1069,10 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 10 @@ -1279,15 +1087,19 @@ apps/client/src/app/pages/landing/landing-page.html - 423 + 47 + + + apps/client/src/app/pages/landing/landing-page.html + 450 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 + 97 apps/client/src/app/pages/register/register-page.html - 29 + 30 apps/client/src/app/pages/webauthn/webauthn-page.html @@ -1323,7 +1135,7 @@ Accedi apps/client/src/app/components/header/header.component.html - 399 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1359,7 +1171,7 @@ Investimento apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 168 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1387,7 +1199,7 @@ Prestazioni nette assolute apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 + 126 @@ -1395,7 +1207,7 @@ Prestazioni nette apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 + 141 @@ -1403,7 +1215,7 @@ Asset totali apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 + 167 @@ -1411,7 +1223,7 @@ Oggetti di valore apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 + 180 @@ -1419,7 +1231,7 @@ Fondo di emergenza apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 + 192 apps/client/src/app/pages/features/features-page.html @@ -1432,10 +1244,10 @@ Buying Power - Potere d'acquisto + Potere d’acquisto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 + 252 @@ -1443,7 +1255,7 @@ Patrimonio netto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 + 297 @@ -1451,7 +1263,7 @@ Prestazioni annualizzate apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 + 309 @@ -1459,11 +1271,11 @@ Dividendo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 + 181 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 + 343 apps/client/src/app/pages/features/features-page.html @@ -1471,19 +1283,19 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 + 271 Please enter the amount of your emergency fund: - Inserisci l'importo del tuo fondo di emergenza: + Inserisci l’importo del tuo fondo di emergenza: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 + 58 @@ -1491,19 +1303,19 @@ Settori apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 204 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + 329 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 274 apps/client/src/app/pages/public/public-page.html - 45 + 50 @@ -1511,15 +1323,15 @@ Paesi apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 214 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + 340 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + 286 @@ -1531,11 +1343,15 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 + 393 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 + 383 libs/ui/src/lib/assistant/assistant.html @@ -1544,10 +1360,10 @@ Report Data Glitch - Segnala un'anomalia dei dati + Segnala un’anomalia dei dati apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 + 448 @@ -1557,6 +1373,10 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 98 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + Performance @@ -1567,7 +1387,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 + 91 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1642,36 +1462,12 @@ 253 - - This feature requires a subscription. - Questa funzione richiede un abbonamento. - - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 - - - apps/client/src/app/core/http-response.interceptor.ts - 69 - - - - Upgrade Plan - Piano di aggiornamento - - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 - - - apps/client/src/app/core/http-response.interceptor.ts - 72 - - Okay Bene apps/client/src/app/core/http-response.interceptor.ts - 92 + 81 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1699,7 +1495,7 @@ Informativa sulla privacy apps/client/src/app/app.component.html - 90 + 100 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1711,7 +1507,7 @@ Blog apps/client/src/app/app.component.html - 68 + 70 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -1719,15 +1515,15 @@ apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html @@ -1735,7 +1531,7 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + 196 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html @@ -1759,7 +1555,7 @@ apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + 253 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1799,7 +1595,7 @@ Registro delle modifiche apps/client/src/app/app.component.html - 71 + 74 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1808,10 +1604,10 @@ License - Licenza d'uso + Licenza d’uso apps/client/src/app/app.component.html - 80 + 85 apps/client/src/app/pages/about/license/license-page.html @@ -1843,7 +1639,7 @@ Inserisci il tuo codice del buono: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 + 118 @@ -1851,7 +1647,7 @@ Impossibile riscattare il codice del buono apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 + 128 @@ -1859,7 +1655,7 @@ Il codice del buono è stato riscattato apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + 140 @@ -1867,7 +1663,7 @@ Ricarica apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 + 141 @@ -1875,7 +1671,7 @@ Vuoi davvero rimuovere questo metodo di accesso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 + 252 @@ -1883,7 +1679,7 @@ Account apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 + 85 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1903,11 +1699,11 @@ per anno apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 33 apps/client/src/app/pages/pricing/pricing-page.html - 254 + 257 @@ -1915,7 +1711,7 @@ Prova Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 + 40 @@ -1923,7 +1719,7 @@ Riscatta il buono apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + 54 @@ -1947,7 +1743,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 + 123 @@ -1955,7 +1751,7 @@ Formato data e numero apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 125 @@ -1963,11 +1759,11 @@ Modalità Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 + 173 apps/client/src/app/pages/features/features-page.html - 190 + 191 @@ -1975,7 +1771,7 @@ Accesso con impronta digitale apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 + 191 @@ -1987,7 +1783,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 + 224 @@ -2000,7 +1796,7 @@ Grant access - Concedi l'accesso + Concedi l’accesso apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 7 @@ -2043,7 +1839,7 @@ Contanti apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 + 226 @@ -2051,15 +1847,15 @@ Valuta apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + 65 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + 132 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + 235 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2067,7 +1863,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + 144 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2083,7 +1879,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + 136 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2099,7 +1895,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + 86 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2132,7 +1928,7 @@ As you are already logged in, you cannot access the demo account. - Poiché hai già effettuato l'accesso, non puoi accedere all'account demo. + Poiché hai già effettuato l’accesso, non puoi accedere all’account demo. apps/client/src/app/pages/demo/demo-page.component.ts 35 @@ -2219,7 +2015,7 @@ Per account apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 + 286 @@ -2235,7 +2031,7 @@ Per classe asset apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 + 85 @@ -2243,7 +2039,7 @@ Per partecipazione apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 + 107 @@ -2251,7 +2047,7 @@ Per settore apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 + 130 @@ -2259,7 +2055,7 @@ Per continente apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 + 153 @@ -2267,7 +2063,7 @@ Per paese apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 + 264 @@ -2275,11 +2071,11 @@ Regioni apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 + 198 apps/client/src/app/pages/public/public-page.html - 76 + 87 @@ -2307,7 +2103,7 @@ Cronologia degli investimenti apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 + 296 @@ -2315,7 +2111,7 @@ In alto apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 166 @@ -2323,7 +2119,7 @@ In basso apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 + 215 @@ -2355,7 +2151,7 @@ Regola del 4% apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 + 40 @@ -2400,18 +2196,18 @@ Update activity - Aggiorna l'attività + Aggiorna l’attività apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 + 10 Add activity - Aggiungi un'attività + Aggiungi un’attività apps/client/src/app/components/home-overview/home-overview.html - 56 + 52 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2423,7 +2219,7 @@ Vendi libs/ui/src/lib/i18n.ts - 37 + 40 @@ -2431,11 +2227,11 @@ Nome, simbolo o ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 26 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + 124 @@ -2443,11 +2239,11 @@ Quantità apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 + 156 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 + 188 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2459,11 +2255,11 @@ Prezzo unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 + 286 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2475,11 +2271,11 @@ Commissione apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 306 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 330 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2491,7 +2287,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + 365 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2499,7 +2295,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + 339 @@ -2507,23 +2303,23 @@ Classe asset apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + 86 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + 161 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + 245 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + 232 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + 354 @@ -2548,7 +2344,7 @@ Import has been completed - L'importazione è stata completata + L’importazione è stata completata apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 128 @@ -2573,13 +2369,17 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts 41 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + Currencies Valute apps/client/src/app/pages/public/public-page.html - 30 + 32 @@ -2587,7 +2387,7 @@ Continenti apps/client/src/app/pages/public/public-page.html - 60 + 68 @@ -2595,7 +2395,7 @@ Ghostfolio ti permette di tenere traccia della tua ricchezza. apps/client/src/app/pages/public/public-page.html - 148 + 159 @@ -2611,7 +2411,7 @@ Continua con Internet Identity apps/client/src/app/pages/register/register-page.html - 41 + 42 @@ -2619,7 +2419,7 @@ Continua con Google apps/client/src/app/pages/register/register-page.html - 51 + 53 @@ -2656,7 +2456,7 @@ Oops, authentication has failed. - Ops, l'autenticazione non è riuscita. + Ops, l’autenticazione non è riuscita. apps/client/src/app/pages/webauthn/webauthn-page.html 19 @@ -2691,7 +2491,7 @@ Importa le attività apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 + 45 @@ -2739,7 +2539,7 @@ Vuoi davvero eliminare questa attività? libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + 235 @@ -2787,7 +2587,7 @@ Lingua apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 + 48 @@ -2795,7 +2595,7 @@ Inizia apps/client/src/app/components/header/header.component.html - 411 + 404 @@ -2803,7 +2603,7 @@ Questa funzionalità non è attualmente disponibile. apps/client/src/app/core/http-response.interceptor.ts - 60 + 53 @@ -2811,7 +2611,7 @@ Ops! Qualcosa è andato storto. apps/client/src/app/core/http-response.interceptor.ts - 89 + 78 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2823,11 +2623,11 @@ Riprova più tardi. apps/client/src/app/core/http-response.interceptor.ts - 62 + 55 apps/client/src/app/core/http-response.interceptor.ts - 91 + 80 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2839,7 +2639,7 @@ Modifica apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 + 65 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -2851,11 +2651,11 @@ Mercati sviluppati apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 + 222 apps/client/src/app/pages/public/public-page.html - 93 + 104 @@ -2863,23 +2663,23 @@ Sottoclasse asset apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + 95 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + 170 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + 258 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + 241 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + 370 @@ -2887,7 +2687,7 @@ Prezzo unitario medio apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 + 103 @@ -2895,7 +2695,7 @@ Prezzo massimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 + 146 @@ -2903,11 +2703,11 @@ Altri mercati apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 + 240 apps/client/src/app/pages/public/public-page.html - 111 + 122 @@ -2915,11 +2715,11 @@ Mercati emergenti apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 + 231 apps/client/src/app/pages/public/public-page.html - 102 + 113 @@ -2927,11 +2727,11 @@ Settore apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + 187 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + 258 @@ -2939,7 +2739,7 @@ Paese apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + 198 apps/client/src/app/components/admin-users/admin-users.html @@ -2947,7 +2747,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + 268 @@ -2955,7 +2755,7 @@ Prezzo minimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 + 130 @@ -2971,7 +2771,7 @@ Risparmio libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 381 @@ -2979,11 +2779,11 @@ Interesse libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + 371 libs/ui/src/lib/i18n.ts - 34 + 37 @@ -2991,7 +2791,7 @@ Deposito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 + 361 @@ -3007,7 +2807,7 @@ Numero di settori apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + 131 @@ -3015,7 +2815,7 @@ Numero di paesi apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + 140 @@ -3023,11 +2823,11 @@ Paura apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts - 71 + 96 @@ -3035,11 +2835,11 @@ Avidità apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts - 72 + 97 @@ -3047,7 +2847,7 @@ Filtra per... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + 328 @@ -3063,7 +2863,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 3 + 4 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -3075,7 +2875,7 @@ Funzionalità sperimentali apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 + 207 @@ -3091,7 +2891,7 @@ Confronta con... apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 + 18 @@ -3104,10 +2904,10 @@ Excluded from Analysis - Escluso dall'analisi + Escluso dall’analisi apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 + 264 @@ -3115,7 +2915,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 + 38 @@ -3123,7 +2923,7 @@ Aspetto apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 + 148 @@ -3131,7 +2931,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 + 162 @@ -3139,7 +2939,7 @@ Chiaro apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 + 163 @@ -3147,7 +2947,7 @@ Scuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 164 @@ -3155,7 +2955,7 @@ Importo totale apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 + 141 @@ -3163,7 +2963,7 @@ Evoluzione del portafoglio apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 268 @@ -3171,7 +2971,7 @@ Tasso di risparmio apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 + 213 @@ -3195,7 +2995,7 @@ Simbolo libs/ui/src/lib/i18n.ts - 25 + 27 @@ -3203,7 +3003,7 @@ Etichetta libs/ui/src/lib/i18n.ts - 26 + 28 @@ -3211,7 +3011,7 @@ Contanti libs/ui/src/lib/i18n.ts - 40 + 43 @@ -3219,7 +3019,7 @@ Materia prima libs/ui/src/lib/i18n.ts - 41 + 44 @@ -3227,7 +3027,7 @@ Azione ordinaria libs/ui/src/lib/i18n.ts - 42 + 45 @@ -3235,7 +3035,7 @@ Reddito fisso libs/ui/src/lib/i18n.ts - 43 + 46 @@ -3243,7 +3043,7 @@ Immobiliare libs/ui/src/lib/i18n.ts - 45 + 48 @@ -3251,7 +3051,7 @@ Obbligazioni libs/ui/src/lib/i18n.ts - 48 + 51 @@ -3259,7 +3059,7 @@ Criptovaluta libs/ui/src/lib/i18n.ts - 49 + 52 @@ -3267,7 +3067,7 @@ ETF libs/ui/src/lib/i18n.ts - 50 + 53 @@ -3275,7 +3075,7 @@ Fondo comune di investimento libs/ui/src/lib/i18n.ts - 51 + 54 @@ -3283,7 +3083,7 @@ Metalli preziosi libs/ui/src/lib/i18n.ts - 52 + 55 @@ -3291,7 +3091,7 @@ Azione ordinaria privata libs/ui/src/lib/i18n.ts - 53 + 56 @@ -3299,7 +3099,7 @@ Azione libs/ui/src/lib/i18n.ts - 54 + 57 @@ -3307,7 +3107,7 @@ Fondo di emergenza libs/ui/src/lib/i18n.ts - 13 + 15 @@ -3315,11 +3115,11 @@ Altro libs/ui/src/lib/i18n.ts - 21 + 23 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + 403 @@ -3327,11 +3127,11 @@ Nessun dato disponibile libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + 405 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + 418 @@ -3339,7 +3139,7 @@ Nord America libs/ui/src/lib/i18n.ts - 64 + 67 @@ -3347,7 +3147,7 @@ Africa libs/ui/src/lib/i18n.ts - 61 + 64 @@ -3355,7 +3155,7 @@ Asia libs/ui/src/lib/i18n.ts - 62 + 65 @@ -3363,7 +3163,7 @@ Europa libs/ui/src/lib/i18n.ts - 63 + 66 @@ -3371,7 +3171,7 @@ Oceania libs/ui/src/lib/i18n.ts - 65 + 68 @@ -3379,7 +3179,7 @@ Sud America libs/ui/src/lib/i18n.ts - 66 + 69 @@ -3387,7 +3187,7 @@ Sono supportati i seguenti formati di file: apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 + 90 @@ -3395,11 +3195,11 @@ Indietro apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 + 144 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 + 178 @@ -3407,43 +3207,47 @@ Comunità apps/client/src/app/app.component.html - 105 + 118 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 77 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 83 apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 88 apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + 92 apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + 96 apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + 100 apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + 105 apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + 110 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 apps/client/src/app/pages/features/features-page.html - 256 + 259 @@ -3451,7 +3255,7 @@ Conteggio attività apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 113 @@ -3467,7 +3271,7 @@ Mappatura dei simboli apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + 292 @@ -3479,7 +3283,7 @@ libs/ui/src/lib/i18n.ts - 32 + 35 @@ -3487,7 +3291,7 @@ Cronologia dei dividendi apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 + 354 @@ -3511,7 +3315,7 @@ Convalida dei dati... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 + 234 @@ -3519,15 +3323,15 @@ Importa apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 + 110 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 + 153 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 + 186 @@ -3571,7 +3375,7 @@ Partecipazione apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 + 32 @@ -3579,7 +3383,7 @@ Carica i dividendi apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 + 68 @@ -3611,7 +3415,7 @@ Nucleo libs/ui/src/lib/i18n.ts - 9 + 10 @@ -3619,7 +3423,7 @@ Sovvenzione libs/ui/src/lib/i18n.ts - 14 + 17 @@ -3627,7 +3431,7 @@ Rischio più elevato libs/ui/src/lib/i18n.ts - 15 + 18 @@ -3635,7 +3439,7 @@ Rischio inferiore libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3643,7 +3447,7 @@ Fondo pensione libs/ui/src/lib/i18n.ts - 23 + 25 @@ -3651,7 +3455,7 @@ Satellite libs/ui/src/lib/i18n.ts - 24 + 26 @@ -3667,15 +3471,15 @@ Esperienza priva di distrazioni per i periodi più turbolenti apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + 174 Sneak peek at upcoming functionality - Un'anteprima delle funzionalità in arrivo + Un’anteprima delle funzionalità in arrivo apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 208 @@ -3695,11 +3499,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 55 + 57 apps/client/src/app/pages/pricing/pricing-page.html - 199 + 203 @@ -3711,11 +3515,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 63 + 65 apps/client/src/app/pages/pricing/pricing-page.html - 207 + 211 @@ -3727,11 +3531,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 67 + 69 apps/client/src/app/pages/pricing/pricing-page.html - 211 + 215 @@ -3743,11 +3547,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 83 + 85 apps/client/src/app/pages/pricing/pricing-page.html - 231 + 235 @@ -3763,7 +3567,7 @@ Aggiorna il piano apps/client/src/app/components/header/header.component.html - 182 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3771,11 +3575,11 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + 16 apps/client/src/app/pages/pricing/pricing-page.html - 268 + 271 @@ -3783,7 +3587,7 @@ Per gli investitori esperti di tecnologia che preferiscono gestire Ghostfolio sulla propria infrastruttura. apps/client/src/app/pages/pricing/pricing-page.html - 36 + 38 @@ -3791,15 +3595,15 @@ Transazioni illimitate apps/client/src/app/pages/pricing/pricing-page.html - 43 + 45 apps/client/src/app/pages/pricing/pricing-page.html - 126 + 129 apps/client/src/app/pages/pricing/pricing-page.html - 187 + 191 @@ -3807,15 +3611,15 @@ Account illimitati apps/client/src/app/pages/pricing/pricing-page.html - 47 + 49 apps/client/src/app/pages/pricing/pricing-page.html - 130 + 133 apps/client/src/app/pages/pricing/pricing-page.html - 191 + 195 @@ -3823,15 +3627,15 @@ Prestazioni del portafoglio apps/client/src/app/pages/pricing/pricing-page.html - 51 + 53 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 137 apps/client/src/app/pages/pricing/pricing-page.html - 195 + 199 @@ -3839,7 +3643,7 @@ Self-hosted, aggiornamento manuale. apps/client/src/app/pages/pricing/pricing-page.html - 92 + 94 @@ -3847,11 +3651,11 @@ Free apps/client/src/app/pages/pricing/pricing-page.html - 93 + 95 apps/client/src/app/pages/pricing/pricing-page.html - 150 + 153 @@ -3859,7 +3663,7 @@ Per i nuovi investitori che hanno appena iniziato a fare trading. apps/client/src/app/pages/pricing/pricing-page.html - 120 + 123 @@ -3867,11 +3671,11 @@ Offerta cloud Ghostfolio completamente gestita. apps/client/src/app/pages/pricing/pricing-page.html - 149 + 152 apps/client/src/app/pages/pricing/pricing-page.html - 240 + 244 @@ -3879,7 +3683,7 @@ Per gli investitori ambiziosi che hanno bisogno di un quadro completo dei propri asset finanziari. apps/client/src/app/pages/pricing/pricing-page.html - 180 + 184 @@ -3890,12 +3694,12 @@ 280 - + Get Started Inizia - apps/client/src/app/pages/pricing/pricing-page.html - 291 + apps/client/src/app/pages/landing/landing-page.html + 446 @@ -3903,7 +3707,7 @@ È gratuito. apps/client/src/app/pages/pricing/pricing-page.html - 294 + 301 @@ -3911,7 +3715,7 @@ Commissioni apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 + 203 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3919,7 +3723,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 + 176 @@ -3931,15 +3735,15 @@ apps/client/src/app/pages/features/features-page.html - 160 + 161 apps/client/src/app/pages/pricing/pricing-page.html - 59 + 61 apps/client/src/app/pages/pricing/pricing-page.html - 203 + 207 @@ -3955,15 +3759,15 @@ Importazione ed esportazione dei dati apps/client/src/app/pages/pricing/pricing-page.html - 71 + 73 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 141 apps/client/src/app/pages/pricing/pricing-page.html - 215 + 219 @@ -3971,7 +3775,7 @@ Passa facilmente a Ghostfolio Premium libs/ui/src/lib/i18n.ts - 11 + 13 @@ -3979,7 +3783,7 @@ Supporto della comunità apps/client/src/app/pages/pricing/pricing-page.html - 88 + 90 @@ -3987,7 +3791,7 @@ Supporto via email e chat apps/client/src/app/pages/pricing/pricing-page.html - 236 + 240 @@ -3995,7 +3799,7 @@ Passa facilmente a Ghostfolio Premium o Ghostfolio Open Source libs/ui/src/lib/i18n.ts - 10 + 12 @@ -4003,7 +3807,7 @@ Passa facilmente a Ghostfolio Open Source o a Ghostfolio Basic libs/ui/src/lib/i18n.ts - 12 + 14 @@ -4014,12 +3818,12 @@ 2 - + Oops! Could not get the historical exchange rate from Ops! Impossibile ottenere il tasso di cambio storico da apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 + 240 @@ -4047,7 +3851,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 226 + 230 @@ -4063,11 +3867,11 @@ Rinnova il piano apps/client/src/app/components/header/header.component.html - 190 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 + 21 apps/client/src/app/pages/pricing/pricing-page.html @@ -4076,7 +3880,7 @@ Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - La nostra offerta cloud ufficiale Ghostfolio Premium è il modo più semplice per iniziare. Grazie al risparmio di tempo, questa è l'opzione migliore per la maggior parte delle persone. I ricavi vengono utilizzati per coprire l'infrastruttura di hosting e per finanziare lo sviluppo continuo di Ghostfolio. + La nostra offerta cloud ufficiale Ghostfolio Premium è il modo più semplice per iniziare. Grazie al risparmio di tempo, questa è l’opzione migliore per la maggior parte delle persone. I ricavi vengono utilizzati per coprire l’infrastruttura di hosting e per finanziare lo sviluppo continuo di Ghostfolio. apps/client/src/app/pages/pricing/pricing-page.html 6 @@ -4084,18 +3888,18 @@ Impersonate User - Imita l'utente + Imita l’utente apps/client/src/app/components/admin-users/admin-users.html - 222 + 218 Delete User - Elimina l'utente + Elimina l’utente apps/client/src/app/components/admin-users/admin-users.html - 232 + 229 @@ -4103,7 +3907,7 @@ Vuoi davvero eliminare tutte le tue attività? libs/ui/src/lib/activities-table/activities-table.component.ts - 216 + 225 @@ -4111,7 +3915,7 @@ Per fornitore di ETF apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 + 306 @@ -4119,7 +3923,7 @@ Aggiorna la piattaforma apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 + 8 @@ -4127,7 +3931,7 @@ Aggiungi la piattaforma apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + 10 @@ -4135,15 +3939,15 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 + 352 apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 + 51 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + 25 @@ -4151,7 +3955,7 @@ Vuoi davvero eliminare questa piattaforma? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 + 86 @@ -4167,7 +3971,7 @@ Aggiornamento del saldo di cassa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 + 112 @@ -4180,7 +3984,7 @@ Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Effettua oggi stesso l'aggiornamento a Ghostfolio Premium e ottieni l'accesso a funzionalità esclusive per migliorare la tua esperienza di investimento: + Effettua oggi stesso l’aggiornamento a Ghostfolio Premium e ottieni l’accesso a funzionalità esclusive per migliorare la tua esperienza di investimento: apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 15 @@ -4235,7 +4039,7 @@ Questa attività esiste già. libs/ui/src/lib/i18n.ts - 16 + 19 @@ -4243,7 +4047,7 @@ Gestisci i benchmark apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 + 35 @@ -4259,7 +4063,7 @@ Seleziona il file apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 + 22 @@ -4267,7 +4071,7 @@ Seleziona i dividendi apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + 113 @@ -4275,7 +4079,7 @@ Seleziona le attività apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 + 115 @@ -4307,7 +4111,7 @@ Finanza personale apps/client/src/app/app.component.html - 55 + 54 @@ -4315,7 +4119,7 @@ Domande più frequenti (FAQ) apps/client/src/app/app.component.html - 76 + 80 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -4327,7 +4131,7 @@ Serie attuale apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 + 317 @@ -4335,7 +4139,7 @@ Serie più lunga apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 + 326 @@ -4343,7 +4147,7 @@ Mesi libs/ui/src/lib/i18n.ts - 20 + 22 @@ -4351,7 +4155,7 @@ Anni libs/ui/src/lib/i18n.ts - 28 + 30 @@ -4359,7 +4163,7 @@ Mese libs/ui/src/lib/i18n.ts - 19 + 21 @@ -4367,7 +4171,7 @@ Anno libs/ui/src/lib/i18n.ts - 27 + 29 @@ -4375,7 +4179,7 @@ Passività apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 + 279 apps/client/src/app/pages/features/features-page.html @@ -4475,7 +4279,7 @@ Modalità scura apps/client/src/app/pages/features/features-page.html - 177 + 178 @@ -4483,7 +4287,7 @@ Umore del mercato apps/client/src/app/pages/features/features-page.html - 205 + 206 @@ -4491,7 +4295,7 @@ Analisi statica apps/client/src/app/pages/features/features-page.html - 224 + 225 @@ -4499,7 +4303,7 @@ Multilingue apps/client/src/app/pages/features/features-page.html - 241 + 242 @@ -4507,7 +4311,7 @@ Software open source apps/client/src/app/pages/features/features-page.html - 275 + 278 @@ -4515,7 +4319,7 @@ Passività libs/ui/src/lib/i18n.ts - 36 + 39 @@ -4523,12 +4327,12 @@ Configurazione dello scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + 304 Add Asset Profile - Aggiungi il profilo dell'asset + Aggiungi il profilo dell’asset apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 7 @@ -4554,11024 +4358,2664 @@ Founded Fondato - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 72 + + + Origin + Origine - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region + Regione - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in + Disponibile in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes + ✅ Si - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting + Self-hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously + Usalo in modo anonimo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan + Piano gratuito - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Notes + Note - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Monitora, analizza e visualizza facilmente la tua ricchezza con Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Personal Finance Tools + Strumenti di finanza personale - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Guides + Guide - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 22 + + + Glossary + Glossario - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Azioni, ETF, obbligazioni, criptovalute e materie prime - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + Mortgages, personal loans, credit cards + Mutui, prestiti personali, carte di credito - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + Luxury items, real estate, private companies + Articoli di lusso, immobili, aziende private - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Buy + Compra - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 34 + + + Valuable + Prezioso - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 38 + + + ETFs without Countries + ETF senza paesi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + ETFs without Sectors + ETF senza settori - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 + + + Assets + Asset - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + Preset + Preimpostato - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 24 + + + By Market + Per mercato - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Asia-Pacific + Asia e Pacifico - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 5 + + + Japan + Giappone - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 83 + + + Welcome to Ghostfolio + Benvenuto su Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Setup your accounts + Configura i tuoi account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Ottieni una panoramica finanziaria completa aggiungendo i tuoi conti bancari e di trading. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + Cattura le tue attività - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Registra le tue attività di investimento per tenere aggiornato il tuo portafoglio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Monitora e analizza il tuo portafoglio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Monitora i tuoi progressi in tempo reale, con analisi e approfondimenti completi. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + No data available + Nessun dato disponibile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Ready to take control of your personal finances? + Sei pronto a prendere il controllo delle tue finanze personali? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + Setup accounts + Configura gli account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 44 - - Origin - Origine + + Biometric Authentication + Autenticazione biometrica - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + Per Ghostfolio la trasparenza è al centro dei propri valori. Pubblichiamo il codice sorgente come software open source (OSS) sotto la licenza AGPL-3.0 e condividiamo apertamente le metriche chiave aggregate dello stato operativo della piattaforma. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 6 + + + Active Users + Utenti attivi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 62 + + + New Users + Nuovi utenti - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - - Region - Regione - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - Disponibile in - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ Si - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - Self-hosting - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - Usalo in modo anonimo - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - Piano gratuito - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Notes - Note - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Monitora, analizza e visualizza facilmente la tua ricchezza con Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - - Personal Finance Tools - Strumenti di finanza personale - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - - Guides - Guide - - apps/client/src/app/pages/resources/resources-page.html - 22 - - - - Glossary - Glossario - - apps/client/src/app/pages/resources/resources-page.html - 92 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Azioni, ETF, obbligazioni, criptovalute e materie prime - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - Mortgages, personal loans, credit cards - Mutui, prestiti personali, carte di credito - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - Articoli di lusso, immobili, aziende private - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Buy - Compra - - libs/ui/src/lib/i18n.ts - 31 - - - - Valuable - Prezioso - - libs/ui/src/lib/i18n.ts - 35 - - - - ETFs without Countries - ETF senza paesi - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 - - - - ETFs without Sectors - ETF senza settori - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 - - - - Assets - Asset - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 - - - - Preset - Preimpostato - - libs/ui/src/lib/i18n.ts - 22 - - - - By Market - Per mercato - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Asia-Pacific - Asia e Pacifico - - libs/ui/src/lib/i18n.ts - 5 - - - - Japan - Giappone - - libs/ui/src/lib/i18n.ts - 17 - - - - Welcome to Ghostfolio - Benvenuto su Ghostfolio - - apps/client/src/app/components/home-overview/home-overview.html - 7 - - - - Setup your accounts - Configura i tuoi account - - apps/client/src/app/components/home-overview/home-overview.html - 15 - - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Ottieni una panoramica finanziaria completa aggiungendo i tuoi conti bancari e di trading. - - apps/client/src/app/components/home-overview/home-overview.html - 17 - - - - Capture your activities - Cattura le tue attività - - apps/client/src/app/components/home-overview/home-overview.html - 24 - - - - Record your investment activities to keep your portfolio up to date. - Registra le tue attività di investimento per tenere aggiornato il tuo portafoglio. - - apps/client/src/app/components/home-overview/home-overview.html - 26 - - - - Monitor and analyze your portfolio - Monitora e analizza il tuo portafoglio - - apps/client/src/app/components/home-overview/home-overview.html - 33 - - - - Track your progress in real-time with comprehensive analysis and insights. - Monitora i tuoi progressi in tempo reale, con analisi e approfondimenti completi. - - apps/client/src/app/components/home-overview/home-overview.html - 35 - - - - No data available - Nessun dato disponibile - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - Ready to take control of your personal finances? - Sei pronto a prendere il controllo delle tue finanze personali? - - apps/client/src/app/components/home-overview/home-overview.html - 8 - - - - Setup accounts - Configura gli account - - apps/client/src/app/components/home-overview/home-overview.html - 48 - - - - Biometric Authentication - Autenticazione biometrica - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - Per Ghostfolio la trasparenza è al centro dei propri valori. Pubblichiamo il codice sorgente come software open source (OSS) sotto la licenza AGPL-3.0 e condividiamo apertamente le metriche chiave aggregate dello stato operativo della piattaforma. - - apps/client/src/app/pages/open/open-page.html - 6 - - - - Active Users - Utenti attivi - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - New Users - Nuovi utenti - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Utenti nella comunità Slack - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - Contributori su GitHub - - apps/client/src/app/pages/open/open-page.html - 89 - - - - Stars on GitHub - Stelle su GitHub - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - Estrazioni su Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - Uptime - Tempo di attività - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Export Data - Esporta dati - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - Currencies - Valute - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 - - - - Our - Nostri - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Visit - Visita - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Discover other exciting Open Source Software projects - Scopri altri interessanti progetti di software open source - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Frequently Asked Questions (FAQ) - Domande più frequenti (FAQ) - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Check out the numerous features of Ghostfolio to manage your wealth - Scopri le numerose funzionalità di Ghostfolio per gestire la tua ricchezza - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Discover the latest Ghostfolio updates and insights on personal finance - Scopri gli ultimi aggiornamenti e approfondimenti di Ghostfolio sulla finanza personale - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - Se preferisci eseguire Ghostfolio sulla tua infrastruttura, puoi trovare il codice sorgente e ulteriori istruzioni su GitHub. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - Manage your wealth like a boss - Gestisci la tua ricchezza come un capo - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio è uno strumento open source e rispettoso della privacy per la gestione delle tue finanze personali. Analizza la tua allocazione degli asset, conosci il tuo patrimonio netto e prendi decisioni di investimento solide e basate sui dati. - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - Inizia - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - o - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Monthly Active Users - Utenti attivi mensili - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - As seen in - Come si vede su - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - Proteggi i tuoi asset. Perfeziona la tua strategia di investimento personale. - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio permette alle persone impegnate di tenere traccia di azioni, ETF o criptovalute senza essere tracciate. - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - Vista a 360° - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Web3 Ready - Pronto per il Web3 - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - Usa Ghostfolio in modo anonimo e possiedi i tuoi dati finanziari. - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - Open source - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - Beneficia dei continui miglioramenti grazie a una forte comunità. - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - Perché Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - Ghostfolio è per te se... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - fai trading di azioni, ETF o criptovalute su più piattaforme - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - persegui una strategia buy & hold - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - sei interessato a conoscere la composizione del tuo portafoglio - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - valorizzi la privacy e la proprietà dei dati - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - sei per il minimalismo - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - ti interessa diversificare le tue risorse finanziarie - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - sei interessato all'indipendenza finanziaria - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - non vuoi utilizzare il foglio elettronico nel - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - stai ancora leggendo questo elenco - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - Ulteriori informazioni su Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - Cosa dicono i nostri utenti - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - Membri da tutto il mondo utilizzano Ghostfolio Premium - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - Come funziona Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Sign up anonymously* - Iscriviti in modo anonimo* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - * non è richiesto alcun indirizzo email né la carta di credito - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - Aggiungi le tue transazioni storiche - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - Ottieni informazioni preziose sulla composizione del tuo portafoglio - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - Seipronto? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - Iscriviti adesso o consulta l'account di esempio - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - Live Demo - Demo in tempo reale - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Get the full picture of your personal finances across multiple platforms. - Ottieni un quadro completo delle tue finanze personali su più piattaforme. - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Get started in only 3 steps - Inizia in soli 3 passi - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - faq - domande-piu-frequenti - - apps/client/src/app/app.component.ts - 66 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 37 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 42 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 48 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 17 - - - - features - funzionalita - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/components/header/header.component.ts - 78 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 - - - - about - informazioni-su - - apps/client/src/app/app.component.ts - 59 - - - apps/client/src/app/app.component.ts - 60 - - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/app.component.ts - 63 - - - apps/client/src/app/components/header/header.component.ts - 77 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 - - - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - apps/client/src/app/pages/about/about-page.component.ts - 74 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 - - - - privacy-policy - informativa-sulla-privacy - - apps/client/src/app/app.component.ts - 64 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - - license - licenza - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - - markets - mercati - - apps/client/src/app/app.component.ts - 68 - - - apps/client/src/app/components/header/header.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 - - - - pricing - prezzi - - apps/client/src/app/app.component.ts - 69 - - - apps/client/src/app/components/header/header.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 - - - apps/client/src/app/core/http-response.interceptor.ts - 83 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 - - - - register - iscrizione - - apps/client/src/app/app.component.ts - 70 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 - - - apps/client/src/app/pages/features/features-page.component.ts - 31 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 - - - - resources - risorse - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/components/header/header.component.ts - 81 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/features/features-page.component.ts - 32 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 19 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Questa pagina panoramica presenta una raccolta curata di strumenti di finanza personale confrontati con l'alternativa open source Ghostfolio. Se apprezzi la trasparenza, la privacy dei dati e la collaborazione con la comunità, Ghostfolio ti offre un'ottima opportunità per prendere il controllo della tua gestione finanziaria. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Esplora i link qui sotto per confrontare una serie di strumenti di finanza personale con Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - L'alternativa open source a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - Open Source Alternative to - L'alternativa open source a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - The Open Source Alternative to - L'alternativa open source a - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Stai cercando un'alternativa open source a ? Ghostfolio è un potente strumento di gestione del portafoglio che fornisce alle persone una piattaforma completa per monitorare, analizzare e ottimizzare i propri investimenti. Che tu sia un investitore esperto o alle prime armi, Ghostfolio offre un'interfaccia utente intuitiva e un'ampia gamma di funzionalità per aiutarti a prendere decisioni informate e il controllo del tuo futuro finanziario. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio è un software open source (OSS) che offre un'alternativa economicamente vantaggiosa a particolarmente adatta a persone con un budget limitato, come quelle che perseguono l'indipendenza finanziaria e il pensionamento anticipato (FIRE). Grazie agli sforzi collettivi di una comunità di sviluppatori e di appassionati di finanza personale, Ghostfolio migliora continuamente le sue capacità, la sua sicurezza e la sua esperienza utente. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Analizziamo nel dettaglio la tabella di confronto qui sotto per comprendere a fondo come Ghostfolio si posiziona rispetto a . Esploreremo vari aspetti come le caratteristiche, la privacy dei dati, il prezzo e altro ancora, permettendoti di fare una scelta ben informata per le tue esigenze personali. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - open-source-alternative-to - alternativa-open-source-a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - - Ready to take your investments to the next level? - Sei pronto a portare il tuo investimento al livello successivo? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - - Get Started - Inizia - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - - Switzerland - Svizzera - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 - - - - Global - Globale - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 - - - - United States - Stati Uniti - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 - - - - Belgium - Belgio - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 - - - - Germany - Germania - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 - - - - Austria - Austria - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 - - - - Italy - Italia - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 - - - - Netherlands - Paesi Bassi - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 - - - - Thailand - Thailandia - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 - - - - New Zealand - Nuova Zelanda - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 - - - - Czech Republic - Repubblica Ceca - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 - - - - (Last 24 hours) - (Ultime 24 ore) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - (Last 30 days) - (Ultimi 30 giorni) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - (Last 90 days) - (Ultimi 90 giorni) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Choose or drop a file here - Choose or drop a file here - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - You are using the Live Demo. - You are using the Live Demo. - - apps/client/src/app/app.component.html - 17 - - - - One-time fee, annual account fees - One-time fee, annual account fees - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - Distribution of corporate earnings - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Oops! Could not get the historical exchange rate from - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - Fee - - libs/ui/src/lib/i18n.ts - 33 - - - - Interest - Interest - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - Revenue for lending out money - Revenue for lending out money - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Add Tag - Add Tag - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - Do you really want to delete this tag? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - Update tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - Add tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - France - France - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - Currency Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - Account Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Transfer Cash Balance - Transfer Cash Balance - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Benchmark - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 - - - - Version - Version - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - Settings - Settings - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - From - From - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - To - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 + apps/client/src/app/pages/open/open-page.html + 51 - - Transfer - Transfer + + Users in Slack community + Utenti nella comunità Slack - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 + apps/client/src/app/pages/open/open-page.html + 75 - - Finland - Finland + + Contributors on GitHub + Contributori su GitHub - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 + apps/client/src/app/pages/open/open-page.html + 89 - - Membership - Membership + + Stars on GitHub + Stelle su GitHub - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + apps/client/src/app/pages/landing/landing-page.html + 88 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 + apps/client/src/app/pages/open/open-page.html + 103 - - Access - Access + + Pulls on Docker Hub + Estrazioni su Docker Hub - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + apps/client/src/app/pages/landing/landing-page.html + 106 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 + apps/client/src/app/pages/open/open-page.html + 117 - - Find holding... - Find holding... + + Uptime + Tempo di attività - libs/ui/src/lib/assistant/assistant.component.ts - 138 + apps/client/src/app/pages/open/open-page.html + 132 - - No entries... - No entries... - - libs/ui/src/lib/assistant/assistant.html - 63 - + + Export Data + Esporta dati - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 - - Asset Profile - Asset Profile + + Currencies + Valute - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? + + Our + Nostri - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 - - Search - Search + + Visit + Visita - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 - - Add Manually - Add Manually + + Discover other exciting Open Source Software projects + Scopri altri interessanti progetti di software open source - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme. + + Frequently Asked Questions (FAQ) + Domande più frequenti (FAQ) - apps/client/src/app/pages/i18n/i18n-page.html + apps/client/src/app/pages/faq/overview/faq-overview-page.html 4 - - - Last All Time High - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 65 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - - - User - User - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 - - Ghostfolio vs comparison table - Ghostfolio vs comparison table - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - + + Check out the numerous features of Ghostfolio to manage your wealth + Scopri le numerose funzionalità di Ghostfolio per gestire la tua ricchezza - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/features/features-page.html + 6 + + + Discover the latest Ghostfolio updates and insights on personal finance + Scopri gli ultimi aggiornamenti e approfondimenti di Ghostfolio sulla finanza personale - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Se preferisci eseguire Ghostfolio sulla tua infrastruttura, puoi trovare il codice sorgente e ulteriori istruzioni su GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + Manage your wealth like a boss + Gestisci la tua ricchezza come un capo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio è uno strumento open source e rispettoso della privacy per la gestione delle tue finanze personali. Analizza la tua allocazione degli asset, conosci il tuo patrimonio netto e prendi decisioni di investimento solide e basate sui dati. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started + Inizia - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Monthly Active Users + Utenti attivi mensili - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 70 + + + As seen in + Come si vede su - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + Proteggi i tuoi asset. Perfeziona la tua strategia di investimento personale. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio permette alle persone impegnate di tenere traccia di azioni, ETF o criptovalute senza essere tracciate. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 229 + + + 360° View + Vista a 360° - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Web3 Ready + Pronto per il Web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + Usa Ghostfolio in modo anonimo e possiedi i tuoi dati finanziari. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source + Open source - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. + Beneficia dei continui miglioramenti grazie a una forte comunità. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + Perché Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 272 + + + Ghostfolio is for you if you are... + Ghostfolio è per te se... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + fai trading di azioni, ETF o criptovalute su più piattaforme - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy + persegui una strategia buy & hold - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition + sei interessato a conoscere la composizione del tuo portafoglio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership + valorizzi la privacy e la proprietà dei dati - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism + sei per il minimalismo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 299 + + + caring about diversifying your financial resources + ti interessa diversificare le tue risorse finanziarie - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence + sei interessato all’indipendenza finanziaria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in + non vuoi utilizzare il foglio elettronico nel - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list + stai ancora leggendo questo elenco - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio + Ulteriori informazioni su Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 319 + + + What our users are saying + Cosa dicono i nostri utenti - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + Membri da tutto il mondo utilizzano Ghostfolio Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + Come funziona Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Sign up anonymously* + Iscriviti in modo anonimo* - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 392 + + + * no e-mail address nor credit card required + * non è richiesto alcun indirizzo email né la carta di credito - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 394 - - Canada - Canada + + Add any of your historical transactions + Aggiungi le tue transazioni storiche - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 + apps/client/src/app/pages/landing/landing-page.html + 405 - - Open Source Wealth Management Software - Open Source Wealth Management Software + + Get valuable insights of your portfolio composition + Ottieni informazioni preziose sulla composizione del tuo portafoglio - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/landing/landing-page.html + 417 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + Are you ready? + Seipronto? - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/landing/landing-page.html + 431 - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. + + Live Demo + Demo in tempo reale - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 + apps/client/src/app/pages/landing/landing-page.html + 49 - - - Poland - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + apps/client/src/app/pages/landing/landing-page.html + 451 - - South Africa - South Africa + + Get the full picture of your personal finances across multiple platforms. + Ottieni un quadro completo delle tue finanze personali su più piattaforme. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 + apps/client/src/app/pages/landing/landing-page.html + 242 - - Extreme Fear - Extreme Fear + + Get started in only 3 steps + Inizia in soli 3 passi - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/landing/landing-page.html + 386 - - Extreme Greed - Extreme Greed + + faq + domande-piu-frequenti - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/app.component.ts + 67 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/core/paths.ts + 3 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - - - 200-Day Trend - 200-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + apps/client/src/app/pages/resources/resources-page.component.ts + 17 - - Cash Balances - Cash Balances + + features + funzionalita - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/app.component.ts + 68 - - - Starting from - Starting from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + about + informazioni-su - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 64 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 83 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 2 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 50 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 74 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/landing/landing-page.component.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + privacy-policy + informativa-sulla-privacy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + license + licenza - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + mercati - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + prezzi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + register + iscrizione - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 71 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 + + + resources + risorse - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 82 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Questa pagina panoramica presenta una raccolta curata di strumenti di finanza personale confrontati con l’alternativa open source Ghostfolio. Se apprezzi la trasparenza, la privacy dei dati e la collaborazione con la comunità, Ghostfolio ti offre un’ottima opportunità per prendere il controllo della tua gestione finanziaria. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Esplora i link qui sotto per confrontare una serie di strumenti di finanza personale con Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + The Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Stai cercando un’alternativa open source a ? Ghostfolio è un potente strumento di gestione del portafoglio che fornisce alle persone una piattaforma completa per monitorare, analizzare e ottimizzare i propri investimenti. Che tu sia un investitore esperto o alle prime armi, Ghostfolio offre un’interfaccia utente intuitiva e un’ampia gamma di funzionalità per aiutarti a prendere decisioni informate e il controllo del tuo futuro finanziario. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio è un software open source (OSS) che offre un’alternativa economicamente vantaggiosa a particolarmente adatta a persone con un budget limitato, come quelle che perseguono l’indipendenza finanziaria e il pensionamento anticipato (FIRE). Grazie agli sforzi collettivi di una comunità di sviluppatori e di appassionati di finanza personale, Ghostfolio migliora continuamente le sue capacità, la sua sicurezza e la sua esperienza utente. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Analizziamo nel dettaglio la tabella di confronto qui sotto per comprendere a fondo come Ghostfolio si posiziona rispetto a . Esploreremo vari aspetti come le caratteristiche, la privacy dei dati, il prezzo e altro ancora, permettendoti di fare una scelta ben informata per le tue esigenze personali. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + open-source-alternative-to + alternativa-open-source-a - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? + Sei pronto a portare il tuo investimento al livello successivo? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Get Started + Inizia - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Switzerland + Svizzera - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 89 + + + Global + Globale - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 16 + + + (Last 24 hours) + (Ultime 24 ore) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Ultimi 30 giorni) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Ultimi 90 giorni) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 + + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.html + 12 - - year - year + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Oops! Could not get the historical exchange rate from + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 36 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks + Account Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + Find holding... + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profile + Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Search + Search - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Add Manually - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + User + User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs tabella di comparazione - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 95 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 98 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + is an invalid currency! + is an invalid currency! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + The current market price is + The current market price is - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + Test + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + Date Range + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 93 + + + Permission + Permission - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + Restricted view + Restricted view - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + Oops! Could not grant access. + Oops! Could not grant access. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + Private + Private - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Job Queue + Job Queue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + Market data is delayed for + Market data is delayed for - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + Investment + Investment - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + Absolute Asset Performance + Absolute Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + Asset Performance + Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + Absolute Currency Performance + Absolute Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + Currency Performance + Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + Absolute Net Performance + Absolute Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Net Performance + Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + Week to date + Week to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + Month to date + Month to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + Year to date + Year to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + View + View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + Oops! A data provider is experiencing the hiccups. + Oops! A data provider is experiencing the hiccups. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + Reset Filters + Reset Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 155 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + years + years - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Asset Classes + Asset Classes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 138 + + + Apply Filters + Apply Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 165 + + + Data Gathering + Data Gathering - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + General + General - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + Cloud + Cloud - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + self-hosting + self-hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + FAQ + FAQ - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! It looks like you’re making too many requests. Please slow down a bit. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + My Account + My Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Active + Active - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Closed + Closed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + Activity + Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + Dividend Yield + Dividend Yield - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + Execute Job + Execute Job - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 + + + Priority + Priority - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + This action is not allowed. + This action is not allowed. - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - is an invalid currency! - is an invalid currency! + + Liquidity + Liquidity - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + libs/ui/src/lib/i18n.ts + 47 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Change with currency effect + Change with currency effect - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - The current market price is - The current market price is + + Performance with currency effect + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Test - Test + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Date Range - Date Range + + Buy and sell + Buy and sell - libs/ui/src/lib/assistant/assistant.html - 93 + libs/ui/src/lib/i18n.ts + 8 - - Permission - Permission + + Delete Activities + Delete Activities - apps/client/src/app/components/access-table/access-table.component.html - 17 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 + + + Internationalization + Internationalization - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + apps/client/src/app/app-routing.module.ts + 79 - - Restricted view - Restricted view + + Do you really want to close your Ghostfolio account? + Do you really want to close your Ghostfolio account? - apps/client/src/app/components/access-table/access-table.component.html - 25 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + Danger Zone + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Oops! Could not grant access. - Oops! Could not grant access. + + Close Account + Close Account - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Private - Private + + By ETF Holding + By ETF Holding - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Job Queue - Job Queue + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 + + + Join now or check out the example account + Join now or check out the example account - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Market data is delayed for - Market data is delayed for + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 - - Investment - Investment + + Show more + Show more - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Absolute Asset Performance - Absolute Asset Performance + + Delete Profiles + Delete Profiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 - - Asset Performance - Asset Performance + + Do you really want to delete these profiles? + Do you really want to delete these profiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Absolute Currency Performance - Absolute Currency Performance + + Oops! Could not delete profiles. + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Currency Performance - Currency Performance + + Table + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Absolute Net Performance - Absolute Net Performance + + Chart + Chart - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Net Performance - Net Performance + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/pages/public/public-page.html + 155 - - Week to date - Week to date + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - WTD - WTD + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Month to date - Month to date + + Budgeting + Budgeting - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - MTD - MTD + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Year to date - Year to date + + Family Office + Family Office - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - View - View + + Investor + Investor - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 + + + Open Source + Open Source - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Personal Finance + Personal Finance - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Privacy + Privacy - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Reset Filters - Reset Filters + + Software + Software - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - year - year + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - years - years + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Asset Classes - Asset Classes + + Wealth + Wealth - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Apply Filters - Apply Filters + + Wealth Management + Wealth Management - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - Data Gathering - Data Gathering + + Australia + Australia - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + libs/ui/src/lib/i18n.ts + 72 - - General - General + + Austria + Austria - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 73 - - Cloud - Cloud + + Belgium + Belgium - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 74 + + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 75 - - Self-Hosting - Self-Hosting + + Canada + Canada - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 76 + + + Czech Republic + Czech Republic - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 77 - - self-hosting - self-hosting + + Finland + Finland - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 78 - - FAQ - FAQ + + France + France - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 + + + Germany + Germany - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 80 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + India + India - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 81 - - My Account - My Account + + Italy + Italy - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 82 - - Active - Active + + Netherlands + Netherlands - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 84 - - Closed - Closed + + New Zealand + New Zealand - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 85 - - Activity - Activity + + Poland + Poland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 86 - - Dividend Yield - Dividend Yield + + Romania + Romania - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 87 - - Execute Job - Execute Job + + South Africa + South Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 88 - - Priority - Priority + + Thailand + Thailand - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 90 - - This action is not allowed. - This action is not allowed. + + United States + United States - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 91 - - Liquidity - Liquidity + + Error + Error - libs/ui/src/lib/i18n.ts - 44 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Change with currency effect - Change with currency effect + + Deactivate + Deactivate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/rule/rule.component.html + 67 - - Performance with currency effect - Performance with currency effect + + Activate + Activate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 69 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Inactive + Inactive - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 - - Buy and sell - Buy and sell + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Delete Activities + + Close + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalization + + Yes + Yes - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index c1a83b809..df8b74a08 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -6,23 +6,23 @@ Account aanmaken apps/client/src/app/app.component.html - 18 + 13 apps/client/src/app/pages/register/register-page.html - 26 + 27 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 2 - + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft. apps/client/src/app/app.component.html - 182 + 199 @@ -30,7 +30,7 @@ Ontvanger apps/client/src/app/components/access-table/access-table.component.html - 10 + 11 @@ -38,7 +38,7 @@ Type apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + 31 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -46,7 +46,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + 15 libs/ui/src/lib/activities-table/activities-table.component.html @@ -58,7 +58,7 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 32 + 33 @@ -66,7 +66,7 @@ Intrekken apps/client/src/app/components/access-table/access-table.component.html - 59 + 62 @@ -74,7 +74,7 @@ Wil je deze verleende toegang echt intrekken? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 56 @@ -90,11 +90,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + 119 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + 152 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -102,15 +102,15 @@ apps/client/src/app/components/admin-users/admin-users.html - 134 + 135 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + 225 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -122,15 +122,15 @@ Naam apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 + 43 apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 + 228 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -138,7 +138,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + 15 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -146,7 +146,7 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + 15 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -154,7 +154,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + 138 libs/ui/src/lib/activities-table/activities-table.component.html @@ -164,13 +164,17 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 28 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + Total Totaal apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + 55 @@ -178,43 +182,43 @@ Waarde apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + 171 apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + 206 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + 53 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 207 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + 210 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + 274 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + 277 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 280 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + 283 libs/ui/src/lib/account-balances/account-balances.component.html @@ -232,25 +236,29 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 74 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + Edit Bewerken apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 278 apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + 215 apps/client/src/app/components/admin-overview/admin-overview.html - 80 + 78 apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + 92 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -266,27 +274,27 @@ Verwijderen apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + 288 apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 + 236 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 64 apps/client/src/app/components/admin-overview/admin-overview.html - 90 + 88 apps/client/src/app/components/admin-overview/admin-overview.html - 199 + 205 apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + 102 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -306,7 +314,7 @@ Wil je deze rekening echt verwijderen? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + 110 @@ -314,7 +322,7 @@ Taken verwijderen apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + 149 @@ -322,23 +330,23 @@ Symbool apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 + 44 apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + 46 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + 117 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + 36 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + 305 @@ -346,19 +354,19 @@ Gegevensbron apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + 53 apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + 77 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 127 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + 154 @@ -366,7 +374,7 @@ Pogingen apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + 81 @@ -374,7 +382,7 @@ Aangemaakt apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + 90 @@ -382,7 +390,7 @@ Voltooid apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + 99 @@ -390,7 +398,7 @@ Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + 108 @@ -401,8 +409,8 @@ 67 - - Historical Market Data + + Historical Market Data Historische marktgegevens apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -414,7 +422,7 @@ Bekijk gegevens apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + 164 @@ -422,7 +430,7 @@ Bekijk Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + 171 @@ -430,7 +438,7 @@ Taak verwijderen apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + 177 @@ -450,7 +458,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + 160 libs/ui/src/lib/account-balances/account-balances.component.html @@ -470,7 +478,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + 114 @@ -482,19 +490,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + 378 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + 43 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + 42 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 + 25 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -506,11 +514,11 @@ apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + 65 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + 427 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -526,19 +534,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + 385 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + 50 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + 49 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + 32 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -550,7 +558,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + 434 @@ -558,15 +566,15 @@ Eerste activiteit apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + 143 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 213 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -578,7 +586,7 @@ Aantal activiteiten apps/client/src/app/components/admin-overview/admin-overview.html - 23 + 19 @@ -586,11 +594,11 @@ Historische gegevens apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 122 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + 84 @@ -598,7 +606,7 @@ Voeg een valuta toe: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + 125 @@ -606,7 +614,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + 152 @@ -614,7 +622,7 @@ Wil je deze valuta echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + 165 @@ -622,7 +630,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + 202 @@ -630,7 +638,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + 222 @@ -646,7 +654,7 @@ per gebruiker apps/client/src/app/components/admin-overview/admin-overview.html - 32 + 28 @@ -654,7 +662,7 @@ Verzamel recente gegevens apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + 177 @@ -662,7 +670,7 @@ Verzamel alle gegevens apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + 180 @@ -670,7 +678,7 @@ Verzamel profielgegevens apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + 183 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -682,7 +690,7 @@ Wisselkoersen apps/client/src/app/components/admin-overview/admin-overview.html - 37 + 34 @@ -698,7 +706,7 @@ Systeembericht apps/client/src/app/components/admin-overview/admin-overview.html - 145 + 148 @@ -706,7 +714,7 @@ Bericht instellen apps/client/src/app/components/admin-overview/admin-overview.html - 165 + 170 @@ -714,7 +722,7 @@ Alleen lezen apps/client/src/app/components/admin-overview/admin-overview.html - 123 + 124 @@ -722,7 +730,7 @@ Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 173 + 178 @@ -730,7 +738,7 @@ Toevoegen apps/client/src/app/components/admin-overview/admin-overview.html - 231 + 238 libs/ui/src/lib/account-balances/account-balances.component.html @@ -742,7 +750,7 @@ Huishouding apps/client/src/app/components/admin-overview/admin-overview.html - 238 + 246 @@ -750,7 +758,7 @@ Cache legen apps/client/src/app/components/admin-overview/admin-overview.html - 242 + 250 @@ -758,7 +766,7 @@ Wilt je deze gebruiker echt verwijderen? apps/client/src/app/components/admin-users/admin-users.component.ts - 113 + 125 @@ -766,7 +774,7 @@ Gebruiker apps/client/src/app/components/header/header.component.html - 230 + 221 @@ -774,7 +782,7 @@ Registratie apps/client/src/app/components/admin-users/admin-users.html - 96 + 97 @@ -782,15 +790,15 @@ Betrokkenheid per dag apps/client/src/app/components/admin-users/admin-users.html - 158 + 157 - + Last Request Laatste verzoek apps/client/src/app/components/admin-users/admin-users.html - 183 + 181 @@ -810,7 +818,7 @@ apps/client/src/app/components/header/header.component.html - 244 + 237 @@ -822,7 +830,7 @@ apps/client/src/app/components/header/header.component.html - 254 + 247 @@ -830,11 +838,11 @@ Rekeningen apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 + 65 apps/client/src/app/components/admin-users/admin-users.html - 113 + 114 apps/client/src/app/components/header/header.component.html @@ -842,11 +850,11 @@ apps/client/src/app/components/header/header.component.html - 262 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -862,11 +870,11 @@ Beheer apps/client/src/app/components/header/header.component.html - 67 + 68 apps/client/src/app/components/header/header.component.html - 278 + 271 @@ -874,15 +882,15 @@ Middelen apps/client/src/app/app.component.html - 60 + 61 apps/client/src/app/components/header/header.component.html - 80 + 82 apps/client/src/app/components/header/header.component.html - 289 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -894,7 +902,7 @@ Prijzen apps/client/src/app/app.component.html - 86 + 94 apps/client/src/app/components/header/header.component.html @@ -902,295 +910,87 @@ apps/client/src/app/components/header/header.component.html - 301 + 294 apps/client/src/app/components/header/header.component.html - 370 + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + About + Over - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 351 + + + Me + Ik - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 203 + + + My Ghostfolio + Mijn Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 262 + + + About Ghostfolio + Over Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 303 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + Features + Functionaliteiten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 76 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 338 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/features/features-page.html + 5 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - - About - Over - - apps/client/src/app/app.component.html - 66 - - - apps/client/src/app/components/header/header.component.html - 111 - - - apps/client/src/app/components/header/header.component.html - 357 - - - - Me - Ik - - apps/client/src/app/components/header/header.component.html - 211 - - - - My Ghostfolio - Mijn Ghostfolio - - apps/client/src/app/components/header/header.component.html - 269 - - - - About Ghostfolio - Over Ghostfolio - - apps/client/src/app/components/header/header.component.html - 309 - - - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 - - - - Features - Functionaliteiten - - apps/client/src/app/app.component.html - 73 - - - apps/client/src/app/components/header/header.component.html - 344 - - - apps/client/src/app/pages/features/features-page.html - 5 - - - - Markets - Markten + + + Markets + Markten apps/client/src/app/app.component.html 58 apps/client/src/app/components/header/header.component.html - 386 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1206,11 +1006,11 @@ Aan de slag apps/client/src/app/pages/features/features-page.html - 300 + 303 apps/client/src/app/pages/public/public-page.html - 153 + 164 @@ -1222,7 +1022,7 @@ apps/client/src/app/components/header/header.component.ts - 229 + 231 @@ -1230,7 +1030,11 @@ Oeps! Onjuiste beveiligingstoken. apps/client/src/app/components/header/header.component.ts - 243 + 246 + + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 @@ -1238,7 +1042,7 @@ Activiteiten beheren apps/client/src/app/components/home-holdings/home-holdings.html - 32 + 61 @@ -1246,7 +1050,7 @@ Laatste Dagen apps/client/src/app/components/home-market/home-market.html - 6 + 7 @@ -1264,6 +1068,10 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 10 @@ -1278,15 +1086,19 @@ apps/client/src/app/pages/landing/landing-page.html - 423 + 47 + + + apps/client/src/app/pages/landing/landing-page.html + 450 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 + 97 apps/client/src/app/pages/register/register-page.html - 29 + 30 apps/client/src/app/pages/webauthn/webauthn-page.html @@ -1322,7 +1134,7 @@ Aanmelden apps/client/src/app/components/header/header.component.html - 399 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1358,7 +1170,7 @@ Belegging apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 168 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1386,7 +1198,7 @@ Absoluut netto rendement apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 + 126 @@ -1394,7 +1206,7 @@ Netto rendement apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 + 141 @@ -1402,7 +1214,7 @@ Totaal Activa apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 + 167 @@ -1410,7 +1222,7 @@ Kostbaarheden apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 + 180 @@ -1418,7 +1230,7 @@ Noodfonds apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 + 192 apps/client/src/app/pages/features/features-page.html @@ -1434,7 +1246,7 @@ Koopkracht apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 + 252 @@ -1442,7 +1254,7 @@ Netto waarde apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 + 297 @@ -1450,7 +1262,7 @@ Rendement per jaar apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 + 309 @@ -1458,11 +1270,11 @@ Dividend apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 + 181 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 + 343 apps/client/src/app/pages/features/features-page.html @@ -1470,11 +1282,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 + 271 @@ -1482,7 +1294,7 @@ Voer het bedrag van je noodfonds in: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 + 58 @@ -1490,19 +1302,19 @@ Sectoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 204 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + 329 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 274 apps/client/src/app/pages/public/public-page.html - 45 + 50 @@ -1510,15 +1322,15 @@ Landen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 214 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + 340 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + 286 @@ -1530,11 +1342,15 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 + 393 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 + 383 libs/ui/src/lib/assistant/assistant.html @@ -1546,7 +1362,7 @@ Gegevensstoring melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 + 448 @@ -1556,6 +1372,10 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 98 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + Performance @@ -1566,7 +1386,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 + 91 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1641,36 +1461,12 @@ 253 - - This feature requires a subscription. - Voor deze functie is een abonnement vereist. - - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 - - - apps/client/src/app/core/http-response.interceptor.ts - 69 - - - - Upgrade Plan - Abonnement uitbreiden - - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 - - - apps/client/src/app/core/http-response.interceptor.ts - 72 - - Okay Oké apps/client/src/app/core/http-response.interceptor.ts - 92 + 81 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1698,7 +1494,7 @@ Privacybeleid apps/client/src/app/app.component.html - 90 + 100 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1710,7 +1506,7 @@ Blog apps/client/src/app/app.component.html - 68 + 70 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -1718,15 +1514,15 @@ apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html @@ -1734,7 +1530,7 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + 196 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html @@ -1758,7 +1554,7 @@ apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + 253 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1798,7 +1594,7 @@ Changelog apps/client/src/app/app.component.html - 71 + 74 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1810,7 +1606,7 @@ Licentie apps/client/src/app/app.component.html - 80 + 85 apps/client/src/app/pages/about/license/license-page.html @@ -1842,7 +1638,7 @@ Voer je couponcode in: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 + 118 @@ -1850,7 +1646,7 @@ Kon je kortingscode niet inwisselen apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 + 128 @@ -1858,7 +1654,7 @@ Je couponcode is ingewisseld apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + 140 @@ -1866,7 +1662,7 @@ Herladen apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 + 141 @@ -1874,7 +1670,7 @@ Wil je deze aanmeldingsmethode echt verwijderen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 + 252 @@ -1882,7 +1678,7 @@ Rekening apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 + 85 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1902,11 +1698,11 @@ per jaar apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 33 apps/client/src/app/pages/pricing/pricing-page.html - 254 + 257 @@ -1914,7 +1710,7 @@ Probeer Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 + 40 @@ -1922,7 +1718,7 @@ Coupon inwisselen apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + 54 @@ -1946,7 +1742,7 @@ Locatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 + 123 @@ -1954,7 +1750,7 @@ Datum- en getalnotatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 125 @@ -1962,11 +1758,11 @@ Zen-modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 + 173 apps/client/src/app/pages/features/features-page.html - 190 + 191 @@ -1974,7 +1770,7 @@ Aanmelden met vingerafdruk apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 + 191 @@ -1986,7 +1782,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 + 224 @@ -2042,7 +1838,7 @@ Contant geld apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 + 226 @@ -2050,15 +1846,15 @@ Valuta apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + 65 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + 132 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + 235 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2066,7 +1862,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + 144 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2082,7 +1878,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + 136 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2098,7 +1894,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + 86 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2218,7 +2014,7 @@ Per rekening apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 + 286 @@ -2234,7 +2030,7 @@ Per asset klasse apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 + 85 @@ -2242,7 +2038,7 @@ Per positie apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 + 107 @@ -2250,7 +2046,7 @@ Per sector apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 + 130 @@ -2258,7 +2054,7 @@ Per continent apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 + 153 @@ -2266,19 +2062,19 @@ Per land apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 + 264 Regions - Regio's + Regio’s apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 + 198 apps/client/src/app/pages/public/public-page.html - 76 + 87 @@ -2306,7 +2102,7 @@ Tijdlijn investeringen apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 + 296 @@ -2314,7 +2110,7 @@ Winnaars apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 166 @@ -2322,7 +2118,7 @@ Verliezers apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 + 215 @@ -2354,7 +2150,7 @@ 4% regel apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 + 40 @@ -2402,7 +2198,7 @@ Activiteit bijwerken apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 + 10 @@ -2410,7 +2206,7 @@ Activiteit toevoegen apps/client/src/app/components/home-overview/home-overview.html - 56 + 52 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2422,7 +2218,7 @@ Verkopen libs/ui/src/lib/i18n.ts - 37 + 40 @@ -2430,11 +2226,11 @@ Naam, symbool of ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 26 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + 124 @@ -2442,11 +2238,11 @@ Hoeveelheid apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 + 156 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 + 188 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2458,11 +2254,11 @@ Prijs per eenheid apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 + 286 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2474,11 +2270,11 @@ Transactiekosten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 306 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 330 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2490,7 +2286,7 @@ Opmerking apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + 365 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2498,7 +2294,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + 339 @@ -2506,23 +2302,23 @@ Asset klasse apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + 86 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + 161 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + 245 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + 232 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + 354 @@ -2572,13 +2368,17 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts 41 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + Currencies Valuta apps/client/src/app/pages/public/public-page.html - 30 + 32 @@ -2586,7 +2386,7 @@ Continenten apps/client/src/app/pages/public/public-page.html - 60 + 68 @@ -2594,7 +2394,7 @@ Ghostfolio stelt je in staat om je vermogen bij te houden. apps/client/src/app/pages/public/public-page.html - 148 + 159 @@ -2610,7 +2410,7 @@ Ga verder met Internet Identity apps/client/src/app/pages/register/register-page.html - 41 + 42 @@ -2618,7 +2418,7 @@ Verder met Google apps/client/src/app/pages/register/register-page.html - 51 + 53 @@ -2690,7 +2490,7 @@ Activiteiten importeren apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 + 45 @@ -2738,7 +2538,7 @@ Wil je deze activiteit echt verwijderen? libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + 235 @@ -2786,7 +2586,7 @@ Taal apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 + 48 @@ -2794,7 +2594,7 @@ Aan de slag apps/client/src/app/components/header/header.component.html - 411 + 404 @@ -2802,7 +2602,7 @@ Deze functie is momenteel niet beschikbaar. apps/client/src/app/core/http-response.interceptor.ts - 60 + 53 @@ -2810,7 +2610,7 @@ Oeps! Er ging iets mis. apps/client/src/app/core/http-response.interceptor.ts - 89 + 78 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2822,11 +2622,11 @@ Probeer het later nog eens. apps/client/src/app/core/http-response.interceptor.ts - 62 + 55 apps/client/src/app/core/http-response.interceptor.ts - 91 + 80 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2838,7 +2638,7 @@ Verandering apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 + 65 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -2850,11 +2650,11 @@ Ontwikkelde markten apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 + 222 apps/client/src/app/pages/public/public-page.html - 93 + 104 @@ -2862,23 +2662,23 @@ Asset subklasse apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + 95 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + 170 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + 258 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + 241 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + 370 @@ -2886,7 +2686,7 @@ Gemiddelde prijs per eenheid apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 + 103 @@ -2894,7 +2694,7 @@ Maximale prijs apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 + 146 @@ -2902,11 +2702,11 @@ Andere markten apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 + 240 apps/client/src/app/pages/public/public-page.html - 111 + 122 @@ -2914,11 +2714,11 @@ Opkomende markten apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 + 231 apps/client/src/app/pages/public/public-page.html - 102 + 113 @@ -2926,11 +2726,11 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + 187 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + 258 @@ -2938,7 +2738,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + 198 apps/client/src/app/components/admin-users/admin-users.html @@ -2946,7 +2746,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + 268 @@ -2954,7 +2754,7 @@ Minimale prijs apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 + 130 @@ -2970,7 +2770,7 @@ Besparingen libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 381 @@ -2978,11 +2778,11 @@ Rente libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + 371 libs/ui/src/lib/i18n.ts - 34 + 37 @@ -2990,7 +2790,7 @@ Storting libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 + 361 @@ -3006,7 +2806,7 @@ Aantal sectoren apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + 131 @@ -3014,7 +2814,7 @@ Aantal landen apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + 140 @@ -3022,11 +2822,11 @@ Angst apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts - 71 + 96 @@ -3034,11 +2834,11 @@ Hebzucht apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts - 72 + 97 @@ -3046,7 +2846,7 @@ Filter op... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + 328 @@ -3062,7 +2862,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 3 + 4 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -3074,7 +2874,7 @@ Experimentele functies apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 + 207 @@ -3090,7 +2890,7 @@ Vergelijk met... apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 + 18 @@ -3106,7 +2906,7 @@ Uitgesloten van analyse apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 + 264 @@ -3114,7 +2914,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 + 38 @@ -3122,7 +2922,7 @@ Weergave apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 + 148 @@ -3130,7 +2930,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 + 162 @@ -3138,7 +2938,7 @@ Licht apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 + 163 @@ -3146,7 +2946,7 @@ Donker apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 164 @@ -3154,7 +2954,7 @@ Totaalbedrag apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 + 141 @@ -3162,7 +2962,7 @@ Waardeontwikkeling van portefeuille apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 268 @@ -3170,7 +2970,7 @@ Spaarrente apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 + 213 @@ -3194,7 +2994,7 @@ Symbool libs/ui/src/lib/i18n.ts - 25 + 27 @@ -3202,7 +3002,7 @@ Label libs/ui/src/lib/i18n.ts - 26 + 28 @@ -3210,7 +3010,7 @@ Contant geld libs/ui/src/lib/i18n.ts - 40 + 43 @@ -3218,7 +3018,7 @@ Grondstof libs/ui/src/lib/i18n.ts - 41 + 44 @@ -3226,7 +3026,7 @@ Equity libs/ui/src/lib/i18n.ts - 42 + 45 @@ -3234,7 +3034,7 @@ Vast inkomen libs/ui/src/lib/i18n.ts - 43 + 46 @@ -3242,7 +3042,7 @@ Vastgoed libs/ui/src/lib/i18n.ts - 45 + 48 @@ -3250,7 +3050,7 @@ Obligatie libs/ui/src/lib/i18n.ts - 48 + 51 @@ -3258,7 +3058,7 @@ Cryptovaluta libs/ui/src/lib/i18n.ts - 49 + 52 @@ -3266,7 +3066,7 @@ ETF libs/ui/src/lib/i18n.ts - 50 + 53 @@ -3274,7 +3074,7 @@ Beleggingsfonds libs/ui/src/lib/i18n.ts - 51 + 54 @@ -3282,7 +3082,7 @@ Edelmetaal libs/ui/src/lib/i18n.ts - 52 + 55 @@ -3290,7 +3090,7 @@ Private equity libs/ui/src/lib/i18n.ts - 53 + 56 @@ -3298,7 +3098,7 @@ Aandeel libs/ui/src/lib/i18n.ts - 54 + 57 @@ -3306,7 +3106,7 @@ Noodfonds libs/ui/src/lib/i18n.ts - 13 + 15 @@ -3314,11 +3114,11 @@ Anders libs/ui/src/lib/i18n.ts - 21 + 23 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + 403 @@ -3326,11 +3126,11 @@ Geen gegevens beschikbaar libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + 405 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + 418 @@ -3338,7 +3138,7 @@ Noord-Amerika libs/ui/src/lib/i18n.ts - 64 + 67 @@ -3346,7 +3146,7 @@ Afrika libs/ui/src/lib/i18n.ts - 61 + 64 @@ -3354,7 +3154,7 @@ Azië libs/ui/src/lib/i18n.ts - 62 + 65 @@ -3362,7 +3162,7 @@ Europa libs/ui/src/lib/i18n.ts - 63 + 66 @@ -3370,7 +3170,7 @@ Oceanië libs/ui/src/lib/i18n.ts - 65 + 68 @@ -3378,7 +3178,7 @@ Zuid-Amerika libs/ui/src/lib/i18n.ts - 66 + 69 @@ -3386,7 +3186,7 @@ De volgende bestandsformaten worden ondersteund: apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 + 90 @@ -3394,11 +3194,11 @@ Terug apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 + 144 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 + 178 @@ -3406,43 +3206,47 @@ Gemeenschap apps/client/src/app/app.component.html - 105 + 118 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 77 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 83 apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 88 apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + 92 apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + 96 apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + 100 apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + 105 apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + 110 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 apps/client/src/app/pages/features/features-page.html - 256 + 259 @@ -3450,7 +3254,7 @@ Aantal activiteiten apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 113 @@ -3466,7 +3270,7 @@ Symbool toewijzen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + 292 @@ -3478,7 +3282,7 @@ libs/ui/src/lib/i18n.ts - 32 + 35 @@ -3486,7 +3290,7 @@ Tijdlijn dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 + 354 @@ -3510,7 +3314,7 @@ Gegevens valideren... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 + 234 @@ -3518,15 +3322,15 @@ Importeren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 + 110 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 + 153 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 + 186 @@ -3570,7 +3374,7 @@ Positie apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 + 32 @@ -3578,7 +3382,7 @@ Laad dividenden apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 + 68 @@ -3610,7 +3414,7 @@ Kern libs/ui/src/lib/i18n.ts - 9 + 10 @@ -3618,7 +3422,7 @@ Toelage libs/ui/src/lib/i18n.ts - 14 + 17 @@ -3626,7 +3430,7 @@ Hoger risico libs/ui/src/lib/i18n.ts - 15 + 18 @@ -3634,7 +3438,7 @@ Lager risico libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3642,7 +3446,7 @@ Pensioen libs/ui/src/lib/i18n.ts - 23 + 25 @@ -3650,7 +3454,7 @@ Satelliet libs/ui/src/lib/i18n.ts - 24 + 26 @@ -3666,7 +3470,7 @@ Afleidingsvrije ervaring voor roerige tijden apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + 174 @@ -3674,7 +3478,7 @@ Voorproefje van nieuwe functionaliteit apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 208 @@ -3694,11 +3498,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 55 + 57 apps/client/src/app/pages/pricing/pricing-page.html - 199 + 203 @@ -3710,11 +3514,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 63 + 65 apps/client/src/app/pages/pricing/pricing-page.html - 207 + 211 @@ -3726,11 +3530,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 67 + 69 apps/client/src/app/pages/pricing/pricing-page.html - 211 + 215 @@ -3742,11 +3546,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 83 + 85 apps/client/src/app/pages/pricing/pricing-page.html - 231 + 235 @@ -3762,7 +3566,7 @@ Abonnement uitbreiden apps/client/src/app/components/header/header.component.html - 182 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3770,11 +3574,11 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + 16 apps/client/src/app/pages/pricing/pricing-page.html - 268 + 271 @@ -3782,7 +3586,7 @@ Voor technisch onderlegde beleggers die Ghostfolio liever op hun eigen systemen draaien. apps/client/src/app/pages/pricing/pricing-page.html - 36 + 38 @@ -3790,15 +3594,15 @@ Onbeperkte transacties apps/client/src/app/pages/pricing/pricing-page.html - 43 + 45 apps/client/src/app/pages/pricing/pricing-page.html - 126 + 129 apps/client/src/app/pages/pricing/pricing-page.html - 187 + 191 @@ -3806,15 +3610,15 @@ Onbeperkte rekeningen apps/client/src/app/pages/pricing/pricing-page.html - 47 + 49 apps/client/src/app/pages/pricing/pricing-page.html - 130 + 133 apps/client/src/app/pages/pricing/pricing-page.html - 191 + 195 @@ -3822,15 +3626,15 @@ Portefeuilleprestaties apps/client/src/app/pages/pricing/pricing-page.html - 51 + 53 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 137 apps/client/src/app/pages/pricing/pricing-page.html - 195 + 199 @@ -3838,7 +3642,7 @@ Zelf hosten, handmatig bijwerken. apps/client/src/app/pages/pricing/pricing-page.html - 92 + 94 @@ -3846,11 +3650,11 @@ Gratis apps/client/src/app/pages/pricing/pricing-page.html - 93 + 95 apps/client/src/app/pages/pricing/pricing-page.html - 150 + 153 @@ -3858,7 +3662,7 @@ Voor nieuwe beleggers die net beginnen met handelen. apps/client/src/app/pages/pricing/pricing-page.html - 120 + 123 @@ -3866,11 +3670,11 @@ Volledig beheerd Ghostfolio cloud-aanbod. apps/client/src/app/pages/pricing/pricing-page.html - 149 + 152 apps/client/src/app/pages/pricing/pricing-page.html - 240 + 244 @@ -3878,7 +3682,7 @@ Voor ambitieuze beleggers die een volledig beeld willen hebben van hun financiële assets. apps/client/src/app/pages/pricing/pricing-page.html - 180 + 184 @@ -3889,12 +3693,12 @@ 280 - + Get Started Aan de slag - apps/client/src/app/pages/pricing/pricing-page.html - 291 + apps/client/src/app/pages/landing/landing-page.html + 446 @@ -3902,7 +3706,7 @@ Het is gratis. apps/client/src/app/pages/pricing/pricing-page.html - 294 + 301 @@ -3910,7 +3714,7 @@ Kosten apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 + 203 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3918,7 +3722,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 + 176 @@ -3930,15 +3734,15 @@ apps/client/src/app/pages/features/features-page.html - 160 + 161 apps/client/src/app/pages/pricing/pricing-page.html - 59 + 61 apps/client/src/app/pages/pricing/pricing-page.html - 203 + 207 @@ -3954,15 +3758,15 @@ Data Import and Export apps/client/src/app/pages/pricing/pricing-page.html - 71 + 73 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 141 apps/client/src/app/pages/pricing/pricing-page.html - 215 + 219 @@ -3970,7 +3774,7 @@ Eenvoudig overstappen naar Ghostfolio Premium libs/ui/src/lib/i18n.ts - 11 + 13 @@ -3978,7 +3782,7 @@ Steun van de Gemeenschap apps/client/src/app/pages/pricing/pricing-page.html - 88 + 90 @@ -3986,7 +3790,7 @@ Ondersteuning via e-mail en chat apps/client/src/app/pages/pricing/pricing-page.html - 236 + 240 @@ -3994,7 +3798,7 @@ Eenvoudig overstappen naar Ghostfolio Premium of Ghostfolio Open Source libs/ui/src/lib/i18n.ts - 10 + 12 @@ -4002,7 +3806,7 @@ Eenvoudig overstappen naar Ghostfolio Open Source of Ghostfolio Basic libs/ui/src/lib/i18n.ts - 12 + 14 @@ -4013,12 +3817,12 @@ 2 - + Oops! Could not get the historical exchange rate from Oeps! Kon de historische wisselkoers niet krijgen van apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 + 240 @@ -4046,7 +3850,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 226 + 230 @@ -4062,11 +3866,11 @@ Abonnement Vernieuwen apps/client/src/app/components/header/header.component.html - 190 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 + 21 apps/client/src/app/pages/pricing/pricing-page.html @@ -4086,7 +3890,7 @@ Gebruiker nadoen apps/client/src/app/components/admin-users/admin-users.html - 222 + 218 @@ -4094,7 +3898,7 @@ Gebruiker verwijderen apps/client/src/app/components/admin-users/admin-users.html - 232 + 229 @@ -4102,7 +3906,7 @@ Wil je echt al je activiteiten verwijderen? libs/ui/src/lib/activities-table/activities-table.component.ts - 216 + 225 @@ -4110,7 +3914,7 @@ Per ETF-aanbieder apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 + 306 @@ -4118,7 +3922,7 @@ Platform bijwerken apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 + 8 @@ -4126,7 +3930,7 @@ Platform toevoegen apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + 10 @@ -4134,15 +3938,15 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 + 352 apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 + 51 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + 25 @@ -4150,7 +3954,7 @@ Wil je dit platform echt verwijderen? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 + 86 @@ -4166,7 +3970,7 @@ Saldo bijwerken apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 + 112 @@ -4234,7 +4038,7 @@ Deze activiteit bestaat al. libs/ui/src/lib/i18n.ts - 16 + 19 @@ -4242,7 +4046,7 @@ Beheer Benchmarks apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 + 35 @@ -4258,7 +4062,7 @@ Selecteer bestand apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 + 22 @@ -4266,7 +4070,7 @@ Selecteer dividenden apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + 113 @@ -4274,7 +4078,7 @@ Selecteer activiteiten apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 + 115 @@ -4306,7 +4110,7 @@ Persoonlijke financiën apps/client/src/app/app.component.html - 55 + 54 @@ -4314,7 +4118,7 @@ Veelgestelde Vragen apps/client/src/app/app.component.html - 76 + 80 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -4326,7 +4130,7 @@ Huidige reeks apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 + 317 @@ -4334,7 +4138,7 @@ Langste reeks apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 + 326 @@ -4342,7 +4146,7 @@ Maanden libs/ui/src/lib/i18n.ts - 20 + 22 @@ -4350,7 +4154,7 @@ Jaren libs/ui/src/lib/i18n.ts - 28 + 30 @@ -4358,7 +4162,7 @@ Maand libs/ui/src/lib/i18n.ts - 19 + 21 @@ -4366,7 +4170,7 @@ Jaar libs/ui/src/lib/i18n.ts - 27 + 29 @@ -4374,7 +4178,7 @@ Verplichtingen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 + 279 apps/client/src/app/pages/features/features-page.html @@ -4415,7 +4219,7 @@ ETFs - ETF's + ETF’s apps/client/src/app/pages/features/features-page.html 25 @@ -4474,7 +4278,7 @@ Dark Mode apps/client/src/app/pages/features/features-page.html - 177 + 178 @@ -4482,7 +4286,7 @@ Marktsentiment apps/client/src/app/pages/features/features-page.html - 205 + 206 @@ -4490,7 +4294,7 @@ Statische Analyse apps/client/src/app/pages/features/features-page.html - 224 + 225 @@ -4498,7 +4302,7 @@ Meerdere talen apps/client/src/app/pages/features/features-page.html - 241 + 242 @@ -4506,7 +4310,7 @@ Open Source Software apps/client/src/app/pages/features/features-page.html - 275 + 278 @@ -4514,7 +4318,7 @@ Verplichtingen libs/ui/src/lib/i18n.ts - 36 + 39 @@ -4522,7 +4326,7 @@ Scraper instellingen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + 304 @@ -4553,11024 +4357,2664 @@ Founded Opgericht - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 72 + + + Origin + Oorsprong - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region + Regio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in + Beschikbaar in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes + ✅ Wel - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No + ❌ Geen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No + ❌ Geen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting + Zelf hosten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously + Gebruik anoniem - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan + Gratis abonnement - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Notes + Notities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Volg, analyseer en visualiseer moeiteloos je vermogen met Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Personal Finance Tools + Tools voor persoonlijke financiën - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Guides + Gidsen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 22 + + + Glossary + Woordenlijst - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Aandelen, ETF’s, obligaties, cryptocurrencies, grondstoffen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + Mortgages, personal loans, credit cards + Hypotheken, persoonlijke leningen, creditcards - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + Luxury items, real estate, private companies + Luxe artikelen, onroerend goed, particuliere bedrijven - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Buy + Koop - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 34 + + + Valuable + Waardevol - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 38 + + + ETFs without Countries + ETF’s zonder Landen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + ETFs without Sectors + ETF’s zonder Sectoren - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 + + + Assets + Assets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + Preset + Voorinstelling - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 24 + + + By Market + Per markt - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Asia-Pacific + Azië en de Stille Oceaan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 5 + + + Japan + Japan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 83 + + + Welcome to Ghostfolio + Welkom bij Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Setup your accounts + Je accounts instellen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Krijg een uitgebreid financieel overzicht door je bank- en effectenrekeningen toe te voegen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + Leg je activiteiten vast - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Leg je investeringsactiviteiten vast om je portefeuille up-to-date te houden. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Volg en analyseer je portfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Volg je voortgang in real-time met uitgebreide analyses en inzichten. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + No data available + Geen data beschikbaar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Ready to take control of your personal finances? + Klaar om je persoonlijke financiën onder controle te krijgen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 8 - - Origin - Oorsprong + + Setup accounts + Account opzetten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/home-overview/home-overview.html + 44 + + + Biometric Authentication + Biometrische authenticatie - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + Bij Ghostfolio is transparantie één van onze kernwaarden. We publiceren de broncode als open source software (OSS) onder de AGPL-3.0 licentie en we delen openlijk geaggregeerde kerncijfers van de operationele status van het platform. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 6 + + + Active Users + Actieve gebruikers - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 62 + + + New Users + Nieuwe gebruikers - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 51 + + + Users in Slack community + Gebruikers in de Slack gemeenschap - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 75 + + + Contributors on GitHub + Contributors op GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 89 + + + Stars on GitHub + Sterren op GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 103 + + + Pulls on Docker Hub + Pulls op Docker Hub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 106 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 117 + + + Uptime + Bedrijfstijd - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 132 + + + Export Data + Exporteer Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 + + + Currencies + Valuta - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 + + + Our + Onze - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + Visit + Bezoek - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + Discover other exciting Open Source Software projects + Ontdek andere interessante Open Source Softwareprojecten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + Frequently Asked Questions (FAQ) + Veelgestelde vragen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 + + + Check out the numerous features of Ghostfolio to manage your wealth + Bekijk de vele functies van Ghostfolio om je vermogen te beheren - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/features/features-page.html + 6 + + + Discover the latest Ghostfolio updates and insights on personal finance + Ontdek de nieuwste Ghostfolio-updates en inzichten in persoonlijke financiën - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Als je Ghostfolio liever op je eigen systeem uitvoert, vind je de broncode en verdere instructies op GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + Manage your wealth like a boss + Beheer je vermogen als een baas - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio is een privacygericht, open source dashboard voor je persoonlijke financiën. Analyseer je asset-allocatie, ken je nettowaarde en neem gefundeerde, datagedreven investeringsbeslissingen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started + Aan de slag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Monthly Active Users + Maandelijkse actieve gebruikers - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 70 + + + As seen in + Zoals te zien in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + Bescherm je financiële bezittingen. Verfijn je persoonlijke investeringsstrategie. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio stelt drukbezette mensen in staat om aandelen, ETF’s of cryptocurrencies bij te houden zonder gevolgd te worden. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 229 + + + 360° View + 360°-overzicht - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Web3 Ready + Klaar voor Web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + Gebruik Ghostfolio anoniem en bezit je financiële gegevens. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source + Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. + Profiteer van voortdurende verbeteringen door een sterke gemeenschap. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + Waarom Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 272 + + + Ghostfolio is for you if you are... + Ghostfolio is iets voor je als je... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + handelt in aandelen, ETF’s of cryptocurrencies op meerdere platforms - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy + streeft naar een buy & hold strategie - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition + geïnteresseerd bent in het krijgen van inzicht in je portefeuillesamenstelling - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership + privacy en eigendom van gegevens waardeert - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism + houdt van een minimalistisch ontwerp - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 299 + + + caring about diversifying your financial resources + zorgdraagt voor het diversifiëren van je financiële middelen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence + geïnteresseerd bent in financiële onafhankelijkheid - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - - Region - Regio - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - Beschikbaar in - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ Wel - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ Geen - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ Geen - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - Zelf hosten - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - Gebruik anoniem - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - Gratis abonnement - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Notes - Notities - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Volg, analyseer en visualiseer moeiteloos je vermogen met Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - - Personal Finance Tools - Tools voor persoonlijke financiën - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - - Guides - Gidsen - - apps/client/src/app/pages/resources/resources-page.html - 22 - - - - Glossary - Woordenlijst - - apps/client/src/app/pages/resources/resources-page.html - 92 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Aandelen, ETF's, obligaties, cryptocurrencies, grondstoffen - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - Mortgages, personal loans, credit cards - Hypotheken, persoonlijke leningen, creditcards - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - Luxe artikelen, onroerend goed, particuliere bedrijven - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Buy - Koop - - libs/ui/src/lib/i18n.ts - 31 - - - - Valuable - Waardevol - - libs/ui/src/lib/i18n.ts - 35 - - - - ETFs without Countries - ETF's zonder Landen - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 - - - - ETFs without Sectors - ETF's zonder Sectoren - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 - - - - Assets - Assets - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 - - - - Preset - Voorinstelling - - libs/ui/src/lib/i18n.ts - 22 - - - - By Market - Per markt - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Asia-Pacific - Azië en de Stille Oceaan - - libs/ui/src/lib/i18n.ts - 5 - - - - Japan - Japan - - libs/ui/src/lib/i18n.ts - 17 - - - - Welcome to Ghostfolio - Welkom bij Ghostfolio - - apps/client/src/app/components/home-overview/home-overview.html - 7 - - - - Setup your accounts - Je accounts instellen - - apps/client/src/app/components/home-overview/home-overview.html - 15 - - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Krijg een uitgebreid financieel overzicht door je bank- en effectenrekeningen toe te voegen. - - apps/client/src/app/components/home-overview/home-overview.html - 17 - - - - Capture your activities - Leg je activiteiten vast - - apps/client/src/app/components/home-overview/home-overview.html - 24 - - - - Record your investment activities to keep your portfolio up to date. - Leg je investeringsactiviteiten vast om je portefeuille up-to-date te houden. - - apps/client/src/app/components/home-overview/home-overview.html - 26 - - - - Monitor and analyze your portfolio - Volg en analyseer je portfolio - - apps/client/src/app/components/home-overview/home-overview.html - 33 - - - - Track your progress in real-time with comprehensive analysis and insights. - Volg je voortgang in real-time met uitgebreide analyses en inzichten. - - apps/client/src/app/components/home-overview/home-overview.html - 35 - - - - No data available - Geen data beschikbaar - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - Ready to take control of your personal finances? - Klaar om je persoonlijke financiën onder controle te krijgen? - - apps/client/src/app/components/home-overview/home-overview.html - 8 - - - - Setup accounts - Account opzetten - - apps/client/src/app/components/home-overview/home-overview.html - 48 - - - - Biometric Authentication - Biometrische authenticatie - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - Bij Ghostfolio is transparantie één van onze kernwaarden. We publiceren de broncode als open source software (OSS) onder de AGPL-3.0 licentie en we delen openlijk geaggregeerde kerncijfers van de operationele status van het platform. - - apps/client/src/app/pages/open/open-page.html - 6 - - - - Active Users - Actieve gebruikers - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - New Users - Nieuwe gebruikers - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Gebruikers in de Slack gemeenschap - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - Contributors op GitHub - - apps/client/src/app/pages/open/open-page.html - 89 - - - - Stars on GitHub - Sterren op GitHub - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - Pulls op Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - Uptime - Bedrijfstijd - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Export Data - Exporteer Data - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - Currencies - Valuta - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 - - - - Our - Onze - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Visit - Bezoek - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Discover other exciting Open Source Software projects - Ontdek andere interessante Open Source Softwareprojecten - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Frequently Asked Questions (FAQ) - Veelgestelde vragen - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Check out the numerous features of Ghostfolio to manage your wealth - Bekijk de vele functies van Ghostfolio om je vermogen te beheren - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Discover the latest Ghostfolio updates and insights on personal finance - Ontdek de nieuwste Ghostfolio-updates en inzichten in persoonlijke financiën - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - Als je Ghostfolio liever op je eigen systeem uitvoert, vind je de broncode en verdere instructies op GitHub. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - Manage your wealth like a boss - Beheer je vermogen als een baas - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio is een privacygericht, open source dashboard voor je persoonlijke financiën. Analyseer je asset-allocatie, ken je nettowaarde en neem gefundeerde, datagedreven investeringsbeslissingen. - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - Aan de slag - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - of - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Monthly Active Users - Maandelijkse actieve gebruikers - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - As seen in - Zoals te zien in - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - Bescherm je financiële bezittingen. Verfijn je persoonlijke investeringsstrategie. - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio stelt drukbezette mensen in staat om aandelen, ETF's of cryptocurrencies bij te houden zonder gevolgd te worden. - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - 360°-overzicht - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Web3 Ready - Klaar voor Web3 - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - Gebruik Ghostfolio anoniem en bezit je financiële gegevens. - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - Open Source - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - Profiteer van voortdurende verbeteringen door een sterke gemeenschap. - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - Waarom Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - Ghostfolio is iets voor je als je... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - handelt in aandelen, ETF's of cryptocurrencies op meerdere platforms - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - streeft naar een buy & hold strategie - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - geïnteresseerd bent in het krijgen van inzicht in je portefeuillesamenstelling - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - privacy en eigendom van gegevens waardeert - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - houdt van een minimalistisch ontwerp - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - zorgdraagt voor het diversifiëren van je financiële middelen - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - geïnteresseerd bent in financiële onafhankelijkheid - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - "nee" zegt tegen spreadsheets in - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - nog steeds deze lijst aan het lezen bent - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - Leer meer over Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - Wat onze gebruikers zeggen - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - Leden van over de hele wereld gebruikenGhostfolio Premium - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - Hoe Ghostfolio werkt? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Sign up anonymously* - Anoniem aanmelden* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - * geen e-mailadres of creditcard nodig - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - Voeg al je historische transacties toe - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - Krijg waardevolle inzichten in de samenstelling van je portefeuille - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - Ben je er klaar voor? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - Nu lid worden of bekijk het voorbeeld account - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - Live Demo - Live Demo - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Get the full picture of your personal finances across multiple platforms. - Krijg een volledig beeld van je persoonlijke financiën op meerdere platforms. - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Get started in only 3 steps - Aan de slag in slechts 3 stappen - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - faq - veelgestelde-vragen - - apps/client/src/app/app.component.ts - 66 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 37 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 42 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 48 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 17 - - - - features - functionaliteiten - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/components/header/header.component.ts - 78 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 - - - - about - over - - apps/client/src/app/app.component.ts - 59 - - - apps/client/src/app/app.component.ts - 60 - - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/app.component.ts - 63 - - - apps/client/src/app/components/header/header.component.ts - 77 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 - - - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - apps/client/src/app/pages/about/about-page.component.ts - 74 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 - - - - privacy-policy - privacybeleid - - apps/client/src/app/app.component.ts - 64 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - - license - licentie - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - - markets - markten - - apps/client/src/app/app.component.ts - 68 - - - apps/client/src/app/components/header/header.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 - - - - pricing - prijzen - - apps/client/src/app/app.component.ts - 69 - - - apps/client/src/app/components/header/header.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 - - - apps/client/src/app/core/http-response.interceptor.ts - 83 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 - - - - register - registratie - - apps/client/src/app/app.component.ts - 70 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 - - - apps/client/src/app/pages/features/features-page.component.ts - 31 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 - - - - resources - bronnen - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/components/header/header.component.ts - 81 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/features/features-page.component.ts - 32 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 19 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Deze overzichtspagina bevat een verzameling tools voor persoonlijke financiën vergeleken met het open source alternatief Ghostfolio. Als je waarde hecht aan transparantie, gegevensprivacy en samenwerking binnen een gemeenschap, biedt Ghostfolio een uitstekende mogelijkheid om je financieel beheer in eigen hand te nemen. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Bekijk de links hieronder om verschillende persoonlijke financiële tools met Ghostfolio te vergelijken. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Open Source alternatief voor - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - Open Source Alternative to - Open Source alternatief voor - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - The Open Source Alternative to - Open Source alternatief voor - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Ben je op zoek naar een open source alternatief voor ? Ghostfolio is een krachtige tool voor portefeuillebeheer die particulieren een uitgebreid platform biedt om hun beleggingen bij te houden, te analyseren en te optimaliseren. Of je nu een ervaren belegger bent of net begint, Ghostfolio biedt een intuïtieve gebruikersinterface en uitgebreide functionaliteiten om je te helpen weloverwogen beslissingen te nemen en je financiële toekomst in eigen handen te nemen. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is open source software (OSS) en biedt een kosteneffectief alternatief voor waardoor het bijzonder geschikt is voor mensen met een krap budget, zoals degenen Financiële onafhankelijkheid nastreven, vroeg met pensioen gaan (FIRE). Door gebruik te maken van de collectieve inspanningen van een gemeenschap van ontwikkelaars en liefhebbers van persoonlijke financiën, verbetert Ghostfolio voortdurend de mogelijkheden, veiligheid en gebruikerservaring. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - open-source-alternative-to - open-source-alternatief-voor - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Houd er rekening mee dat de verstrekte informatie gebaseerd is op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons nauwkeurige gegevens te onderhouden over GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - - Ready to take your investments to the next level? - Klaar om je investeringen naar een hoger niveau te brengen? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - - Get Started - Aan de slag - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - - Switzerland - Zwitserland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 - - - - Global - Wereldwijd - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 - - - - United States - Verenigde Staten - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 - - - - Belgium - België - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 - - - - Germany - Duitsland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 - - - - Austria - Oostenrijk - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 - - - - Italy - Italië - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 - - - - Netherlands - Nederland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 - - - - Thailand - Thailand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 - - - - New Zealand - Nieuw-Zeeland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 - - - - Czech Republic - Tsjechië - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 - - - - (Last 24 hours) - (Laatste 24 uur) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - (Last 30 days) - (Laatste 30 dagen) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - (Last 90 days) - (Laatste 90 dagen) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Choose or drop a file here - Choose or drop a file here - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - You are using the Live Demo. - You are using the Live Demo. - - apps/client/src/app/app.component.html - 17 - - - - One-time fee, annual account fees - One-time fee, annual account fees - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - Distribution of corporate earnings - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Oops! Could not get the historical exchange rate from - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - Fee - - libs/ui/src/lib/i18n.ts - 33 - - - - Interest - Interest - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - Revenue for lending out money - Revenue for lending out money - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Add Tag - Add Tag - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - Do you really want to delete this tag? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - Update tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - Add tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - France - France - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - Currency Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - Account Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Transfer Cash Balance - Transfer Cash Balance - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Benchmark - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 - - - - Version - Version - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - Settings - Settings - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - From - From - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - To - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 - - - - Transfer - Transfer - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 - - - - Finland - Finland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 - - - - Membership - Membership - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 - - - - Access - Access - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 - - - - Find holding... - Find holding... - - libs/ui/src/lib/assistant/assistant.component.ts - 138 - - - - No entries... - No entries... - - libs/ui/src/lib/assistant/assistant.html - 63 - - - libs/ui/src/lib/assistant/assistant.html - 84 - - - - Asset Profile - Asset Profile - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 - - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 - - - - Search - Search - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Add Manually - Add Manually - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden. - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - Last All Time High - Last All Time High - - libs/ui/src/lib/benchmark/benchmark.component.html - 65 - - - - User - User - - apps/client/src/app/components/admin-users/admin-users.html - 29 - - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in + "nee" zegt tegen spreadsheets in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list + nog steeds deze lijst aan het lezen bent - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio + Leer meer over Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 319 + + + What our users are saying + Wat onze gebruikers zeggen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + Leden van over de hele wereld gebruikenGhostfolio Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + Hoe Ghostfolio werkt? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Sign up anonymously* + Anoniem aanmelden* - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 392 + + + * no e-mail address nor credit card required + * geen e-mailadres of creditcard nodig - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 + apps/client/src/app/pages/landing/landing-page.html + 394 - - Canada - Canada + + Add any of your historical transactions + Voeg al je historische transacties toe - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 + apps/client/src/app/pages/landing/landing-page.html + 405 - - Open Source Wealth Management Software - Open Source Wealth Management Software + + Get valuable insights of your portfolio composition + Krijg waardevolle inzichten in de samenstelling van je portefeuille - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/landing/landing-page.html + 417 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + Are you ready? + Ben je er klaar voor? - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/landing/landing-page.html + 431 - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. + + Live Demo + Live Demo - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 + apps/client/src/app/pages/landing/landing-page.html + 49 - - - Poland - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + apps/client/src/app/pages/landing/landing-page.html + 451 - - South Africa - South Africa + + Get the full picture of your personal finances across multiple platforms. + Krijg een volledig beeld van je persoonlijke financiën op meerdere platforms. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 + apps/client/src/app/pages/landing/landing-page.html + 242 - - Extreme Fear - Extreme Fear + + Get started in only 3 steps + Aan de slag in slechts 3 stappen - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/landing/landing-page.html + 386 - - Extreme Greed - Extreme Greed + + faq + veelgestelde-vragen - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/app.component.ts + 67 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/core/paths.ts + 3 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - - - 200-Day Trend - 200-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - - - Cash Balances - Cash Balances - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 - - Starting from - Starting from + + features + functionaliteiten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + about + over - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 64 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 83 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 2 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 50 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 74 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/landing/landing-page.component.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + privacy-policy + privacybeleid - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + + license + licentie + + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + markten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + prijzen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + register + registratie - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 71 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 + + + resources + bronnen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 82 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Deze overzichtspagina bevat een verzameling tools voor persoonlijke financiën vergeleken met het open source alternatief Ghostfolio. Als je waarde hecht aan transparantie, gegevensprivacy en samenwerking binnen een gemeenschap, biedt Ghostfolio een uitstekende mogelijkheid om je financieel beheer in eigen hand te nemen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Bekijk de links hieronder om verschillende persoonlijke financiële tools met Ghostfolio te vergelijken. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Open Source alternatief voor - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Open Source alternatief voor - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + The Open Source Alternative to + Open Source alternatief voor - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Ben je op zoek naar een open source alternatief voor ? Ghostfolio is een krachtige tool voor portefeuillebeheer die particulieren een uitgebreid platform biedt om hun beleggingen bij te houden, te analyseren en te optimaliseren. Of je nu een ervaren belegger bent of net begint, Ghostfolio biedt een intuïtieve gebruikersinterface en uitgebreide functionaliteiten om je te helpen weloverwogen beslissingen te nemen en je financiële toekomst in eigen handen te nemen. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is open source software (OSS) en biedt een kosteneffectief alternatief voor waardoor het bijzonder geschikt is voor mensen met een krap budget, zoals degenen Financiële onafhankelijkheid nastreven, vroeg met pensioen gaan (FIRE). Door gebruik te maken van de collectieve inspanningen van een gemeenschap van ontwikkelaars en liefhebbers van persoonlijke financiën, verbetert Ghostfolio voortdurend de mogelijkheden, veiligheid en gebruikerservaring. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + open-source-alternative-to + open-source-alternatief-voor - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Houd er rekening mee dat de verstrekte informatie gebaseerd is op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons nauwkeurige gegevens te onderhouden over GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? + Klaar om je investeringen naar een hoger niveau te brengen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Get Started + Aan de slag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Switzerland + Zwitserland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 89 + + + Global + Wereldwijd - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 16 + + + (Last 24 hours) + (Laatste 24 uur) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Laatste 30 dagen) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Laatste 90 dagen) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 + + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.html + 12 - - year - year + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Oops! Could not get the historical exchange rate from + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 36 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks + Account Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + Find holding... + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profile + Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Search + Search - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Add Manually - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + User + User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs comparison table - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 95 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 98 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + is an invalid currency! + is an invalid currency! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + The current market price is + The current market price is - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + Test + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + Date Range + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 93 + + + Permission + Permission - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + Restricted view + Restricted view - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + Oops! Could not grant access. + Oops! Could not grant access. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + Private + Private - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Job Queue + Job Queue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + Market data is delayed for + Market data is delayed for - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + Investment + Investment - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + Absolute Asset Performance + Absolute Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + Asset Performance + Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + Absolute Currency Performance + Absolute Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + Currency Performance + Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + Absolute Net Performance + Absolute Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Net Performance + Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + Week to date + Week to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + Month to date + Month to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + Year to date + Year to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + View + View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + Oops! A data provider is experiencing the hiccups. + Oops! A data provider is experiencing the hiccups. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + Reset Filters + Reset Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 155 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + years + years - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Asset Classes + Asset Classes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 138 + + + Apply Filters + Apply Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 165 + + + Data Gathering + Data Gathering - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + General + General - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + Cloud + Cloud - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + self-hosting + self-hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + FAQ + FAQ - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! It looks like you’re making too many requests. Please slow down a bit. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + My Account + My Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Active + Active - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Closed + Closed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + Activity + Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + Dividend Yield + Dividend Yield - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + Execute Job + Execute Job - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 + + + Priority + Priority - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + This action is not allowed. + This action is not allowed. - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - is an invalid currency! - is an invalid currency! + + Liquidity + Liquidity - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + libs/ui/src/lib/i18n.ts + 47 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Change with currency effect + Change with currency effect - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - The current market price is - The current market price is + + Performance with currency effect + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Test - Test + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Date Range - Date Range + + Buy and sell + Buy and sell - libs/ui/src/lib/assistant/assistant.html - 93 + libs/ui/src/lib/i18n.ts + 8 - - Permission - Permission + + Delete Activities + Delete Activities - apps/client/src/app/components/access-table/access-table.component.html - 17 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 + + + Internationalization + Internationalization - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + apps/client/src/app/app-routing.module.ts + 79 - - Restricted view - Restricted view + + Do you really want to close your Ghostfolio account? + Do you really want to close your Ghostfolio account? - apps/client/src/app/components/access-table/access-table.component.html - 25 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + Danger Zone + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Oops! Could not grant access. - Oops! Could not grant access. + + Close Account + Close Account - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Private - Private + + By ETF Holding + By ETF Holding - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Job Queue - Job Queue + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 + + + Join now or check out the example account + Join now or check out the example account - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Market data is delayed for - Market data is delayed for + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 - - Investment - Investment + + Show more + Show more - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 + + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Absolute Asset Performance - Absolute Asset Performance + + Delete Profiles + Delete Profiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 - - Asset Performance - Asset Performance + + Do you really want to delete these profiles? + Do you really want to delete these profiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Absolute Currency Performance - Absolute Currency Performance + + Oops! Could not delete profiles. + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Currency Performance - Currency Performance + + Table + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Absolute Net Performance - Absolute Net Performance + + Chart + Chart - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Net Performance - Net Performance + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/pages/public/public-page.html + 155 - - Week to date - Week to date + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - WTD - WTD + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Month to date - Month to date + + Budgeting + Budgeting - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - MTD - MTD + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Year to date - Year to date + + Family Office + Family Office - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - View - View + + Investor + Investor - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 + + + Open Source + Open Source - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Personal Finance + Personal Finance - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Privacy + Privacy - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Reset Filters - Reset Filters + + Software + Software - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - year - year + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - years - years + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Asset Classes - Asset Classes + + Wealth + Wealth - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Apply Filters - Apply Filters + + Wealth Management + Wealth Management - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - Data Gathering - Data Gathering + + Australia + Australia - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + libs/ui/src/lib/i18n.ts + 72 - - General - General + + Austria + Austria - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 73 - - Cloud - Cloud + + Belgium + Belgium - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 74 + + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 75 - - Self-Hosting - Self-Hosting + + Canada + Canada - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 76 + + + Czech Republic + Czech Republic - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 77 - - self-hosting - self-hosting + + Finland + Finland - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 78 - - FAQ - FAQ + + France + France - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 + + + Germany + Germany - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 80 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + India + India - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 81 - - My Account - My Account + + Italy + Italy - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 82 - - Active - Active + + Netherlands + Netherlands - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 84 - - Closed - Closed + + New Zealand + New Zealand - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 85 - - Activity - Activity + + Poland + Poland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 86 - - Dividend Yield - Dividend Yield + + Romania + Romania - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 87 - - Execute Job - Execute Job + + South Africa + South Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 88 - - Priority - Priority + + Thailand + Thailand - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 90 - - This action is not allowed. - This action is not allowed. + + United States + United States - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 91 - - Liquidity - Liquidity + + Error + Error - libs/ui/src/lib/i18n.ts - 44 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Change with currency effect - Change with currency effect + + Deactivate + Deactivate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/rule/rule.component.html + 67 - - Performance with currency effect - Performance with currency effect + + Activate + Activate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 69 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Inactive + Inactive - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 - - Buy and sell - Buy and sell + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Delete Activities + + Close + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalization + + Yes + Yes - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 1695028cc..27c9f9dc7 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -3,30 +3,30 @@ about - about + o Ghostfolio apps/client/src/app/app.component.ts - 59 + 60 apps/client/src/app/app.component.ts - 60 + 61 apps/client/src/app/app.component.ts - 61 + 62 apps/client/src/app/app.component.ts - 63 + 64 apps/client/src/app/components/header/header.component.ts - 77 + 78 apps/client/src/app/components/header/header.component.ts - 82 + 83 apps/client/src/app/core/paths.ts @@ -78,15499 +78,6943 @@ apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 + 18 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + faq + faq - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + apps/client/src/app/app.component.ts + 67 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 3 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 + + + features + Funkcje - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + license + licencja - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + rynki - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + cennik - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + privacy-policy + privacy-policy - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + apps/client/src/app/pages/about/about-page.component.ts + 63 - - faq - faq + + register + register apps/client/src/app/app.component.ts - 66 + 71 - apps/client/src/app/core/paths.ts - 3 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/resources-page.component.ts - 17 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 + + + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 - - features - features + + resources + resources apps/client/src/app/app.component.ts - 67 + 72 apps/client/src/app/components/header/header.component.ts - 78 + 82 apps/client/src/app/components/header/header.component.ts - 83 + 88 apps/client/src/app/core/paths.ts - 4 + 10 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts 13 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + 14 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 + apps/client/src/app/app.component.html + 12 + + + Create Account + Utwórz Konto - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 + apps/client/src/app/app.component.html + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts + apps/client/src/app/pages/register/register-page.html 27 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 + + + Personal Finance + Finanse Osobiste - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 + apps/client/src/app/app.component.html + 54 + + + Markets + Rynki - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 + apps/client/src/app/app.component.html + 58 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 380 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 + apps/client/src/app/components/home-market/home-market.html + 2 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 + apps/client/src/app/pages/resources/resources-page.html + 56 + + + Resources + Resources - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 + apps/client/src/app/app.component.html + 61 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 82 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 283 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 + apps/client/src/app/pages/resources/resources-page.html + 4 + + + About + About - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 351 + + + Blog + Blog - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 + apps/client/src/app/app.component.html + 70 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 + apps/client/src/app/pages/blog/blog-page.html + 5 + + + Changelog + Dziennik Zmian - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 + apps/client/src/app/app.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + Features + Features - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 + apps/client/src/app/app.component.html + 76 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 338 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 + apps/client/src/app/pages/features/features-page.html + 5 + + + Frequently Asked Questions (FAQ) + Często Zadawane Pytania (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 + apps/client/src/app/app.component.html + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 + apps/client/src/app/pages/about/overview/about-overview-page.html + 146 + + + License + License - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 + apps/client/src/app/app.component.html + 85 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 + apps/client/src/app/pages/about/license/license-page.html + 4 + + + Pricing + Cennik - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 + apps/client/src/app/app.component.html + 94 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 98 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 294 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 365 - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + Privacy Policy + Polityka Prywatności - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 + apps/client/src/app/app.component.html + 100 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 - - license - license + + Community + Społeczność - apps/client/src/app/app.component.ts - 61 + apps/client/src/app/app.component.html + 118 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/about/about-page.component.ts - 55 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 83 - - - markets - markets - apps/client/src/app/app.component.ts - 68 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 88 - apps/client/src/app/components/header/header.component.ts - 79 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 96 - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 100 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 105 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 - - - - pricing - pricing - - apps/client/src/app/app.component.ts - 69 - - - apps/client/src/app/components/header/header.component.ts - 80 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/pages/features/features-page.html + 259 + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 + apps/client/src/app/app.component.html + 199 + + + Alias + Alias - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 + + + Grantee + Beneficjent - apps/client/src/app/core/http-response.interceptor.ts - 83 + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + Type + Type - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 + libs/ui/src/lib/activities-table/activities-table.component.html + 160 + + + Details + Szczegóły - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 + apps/client/src/app/components/access-table/access-table.component.html + 33 + + + Revoke + Revoke - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 + apps/client/src/app/components/access-table/access-table.component.html + 62 + + + Do you really want to revoke this granted access? + Czy na pewno chcesz cofnąć przyznany dostęp? - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 + apps/client/src/app/components/access-table/access-table.component.ts + 56 + + + Cash Balance + Saldo Gotówkowe - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 45 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 - - privacy-policy - privacy-policy - - apps/client/src/app/app.component.ts - 64 - + + Equity + Equity - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 56 + + + Activities + Activities - apps/client/src/app/pages/about/about-page.component.ts - 63 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 61 - - - register - register - apps/client/src/app/app.component.ts - 70 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 90 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 152 - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 44 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/pages/features/features-page.component.ts - 31 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 225 - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 - - resources - resources + + Platform + Platform - apps/client/src/app/app.component.ts - 71 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 65 - apps/client/src/app/components/header/header.component.ts - 81 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/components/header/header.component.ts - 87 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/core/paths.ts + apps/client/src/app/components/accounts-table/accounts-table.component.html 10 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Name + Name - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 60 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 228 - apps/client/src/app/pages/features/features-page.component.ts - 32 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 30 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 30 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 137 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + + + Total + Total - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + Currency + Currency - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 235 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 144 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 275 + + + Value + Value - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 207 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 210 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 274 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 277 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 280 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 283 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 256 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 292 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + + + Edit + Edytuj - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 215 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 78 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 92 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 71 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 429 + + + Delete + Usuń - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 288 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 236 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 102 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 81 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 455 + + + Do you really want to delete this account? + Do you really want to delete this account? - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 110 + + + Asset Profile + Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Historical Market Data + Historical Market Data - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 + + + Symbol + Symbol - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 44 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 46 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 36 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 305 + + + Data Source + Data Source - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 53 - apps/client/src/app/pages/resources/resources-page.component.ts - 19 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 77 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 127 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 154 - - You are using the Live Demo. - You are using the Live Demo. + + Attempts + Attempts - apps/client/src/app/app.component.html - 17 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 81 - - Create Account - Create Account + + Created + Created - apps/client/src/app/app.component.html - 18 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 90 + + + Finished + Finished - apps/client/src/app/pages/register/register-page.html - 26 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 99 + + + Status + Status - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 2 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 108 - - Personal Finance - Personal Finance + + Delete Jobs + Delete Jobs - apps/client/src/app/app.component.html - 55 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 149 - - Markets - Markets + + View Data + View Data - apps/client/src/app/app.component.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 164 + + + View Stacktrace + View Stacktrace - apps/client/src/app/components/header/header.component.html - 386 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 171 + + + Delete Job + Delete Job - apps/client/src/app/components/home-market/home-market.html - 2 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 177 + + + Details for + Details for - apps/client/src/app/pages/resources/resources-page.html - 56 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 2 - - Resources - Resources + + Date + Date - apps/client/src/app/app.component.html - 60 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 6 - apps/client/src/app/components/header/header.component.html - 80 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 160 - apps/client/src/app/components/header/header.component.html - 289 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - apps/client/src/app/pages/resources/resources-page.html - 4 + libs/ui/src/lib/activities-table/activities-table.component.html + 169 - - About - About + + Market Price + Cena Rynkowa - apps/client/src/app/app.component.html - 66 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 26 - apps/client/src/app/components/header/header.component.html - 111 - - - apps/client/src/app/components/header/header.component.html - 357 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 114 - - Blog - Blog + + Cancel + Cancel - apps/client/src/app/app.component.html - 68 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 46 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 204 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 378 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 43 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 42 - apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html - 209 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 - apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 181 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 65 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html - 141 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 427 - apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html - 168 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + Save + Save - apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html - 178 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 48 - apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 385 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 50 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html - 233 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 49 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html - 243 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html - 154 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html - 273 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 434 + + + Currencies + Currencies - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html - 148 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 + + + ETFs without Countries + ETFs without Countries - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html - 270 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + ETFs without Sectors + ETFs without Sectors - apps/client/src/app/pages/blog/blog-page.html - 5 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 - - Changelog - Changelog + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? - apps/client/src/app/app.component.html - 71 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Filter by... + Filter by... - apps/client/src/app/pages/about/changelog/changelog-page.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 328 - - Features - Features + + Asset Class + Asset Class - apps/client/src/app/app.component.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 86 - apps/client/src/app/components/header/header.component.html - 344 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 - apps/client/src/app/pages/features/features-page.html - 5 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 245 - - - Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) - apps/client/src/app/app.component.html - 76 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 232 - apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 354 - - License - License - - apps/client/src/app/app.component.html - 80 - + + Asset Sub Class + Asset Sub Class - apps/client/src/app/pages/about/license/license-page.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 95 - - - Pricing - Pricing - apps/client/src/app/app.component.html - 86 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 170 - apps/client/src/app/components/header/header.component.html - 98 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 258 - apps/client/src/app/components/header/header.component.html - 301 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 241 - apps/client/src/app/components/header/header.component.html + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 370 + + + First Activity + First Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 104 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 143 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 213 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 + + + Activities Count + Activities Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 113 + + + Historical Data + Historical Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 122 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 84 + + + Sectors Count + Sectors Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 131 + + + Countries Count + Countries Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 140 + + + Gather Recent Data + Gather Recent Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 177 + + + Gather All Data + Gather All Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 180 + + + Gather Profile Data + Gather Profile Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 183 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 45 + + + Oops! Could not parse historical data. + Ups! Nie udało się sparsować danych historycznych. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Refresh + Refresh - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + Gather Historical Data + Gather Historical Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 32 + + + Import + Import - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 110 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 + + + Sector + Sector - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 187 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 258 + + + Country + Country - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 198 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-users/admin-users.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 268 + + + Sectors + Sectors - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 329 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 274 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/public/public-page.html + 50 + + + Countries + Countries - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 340 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 286 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Symbol Mapping + Symbol Mapping - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 292 + + + Scraper Configuration + Scraper Configuration - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 + + + Note + Note - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 339 + + + Add Asset Profile + Add Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 + + + Search + Search - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Add Manually - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Name, symbol or ISIN + Name, symbol or ISIN - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + Please add a currency: + Please add a currency: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 125 + + + Do you really want to delete this coupon? + Do you really want to delete this coupon? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 152 + + + Do you really want to delete this currency? + Do you really want to delete this currency? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 165 + + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + Do you really want to flush the cache? + Do you really want to flush the cache? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 202 + + + Please set your system message: + Please set your system message: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 222 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + User Count + User Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 + + + Activity Count + Activity Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 + + + per User + per User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 - - Privacy Policy - Privacy Policy + + Exchange Rates + Exchange Rates - apps/client/src/app/app.component.html - 90 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Add Currency + Add Currency - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html - 4 + apps/client/src/app/components/admin-overview/admin-overview.html + 104 - - Community - Community + + User Signup + User Signup - apps/client/src/app/app.component.html - 105 + apps/client/src/app/components/admin-overview/admin-overview.html + 110 + + + Read-only Mode + Read-only Mode - apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + apps/client/src/app/components/admin-overview/admin-overview.html + 124 + + + System Message + System Message - apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + apps/client/src/app/components/admin-overview/admin-overview.html + 148 + + + Set Message + Set Message - apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 + + + Coupons + Coupons - apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + apps/client/src/app/components/admin-overview/admin-overview.html + 178 + + + Add + Add - apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + apps/client/src/app/components/admin-overview/admin-overview.html + 238 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + Housekeeping + Housekeeping - apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + apps/client/src/app/components/admin-overview/admin-overview.html + 246 + + + Flush Cache + Flush Cache - apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + apps/client/src/app/components/admin-overview/admin-overview.html + 250 + + + Add Platform + Add Platform - apps/client/src/app/pages/features/features-page.html - 256 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 11 - - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + + Url + Url - apps/client/src/app/app.component.html - 182 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 - - - Alias - Alias - apps/client/src/app/components/access-table/access-table.component.html - 3 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 51 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 - - Grantee - Grantee + + Accounts + Accounts - apps/client/src/app/components/access-table/access-table.component.html - 10 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 65 - - - Type - Type - apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + apps/client/src/app/components/admin-users/admin-users.html + 114 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/components/header/header.component.html + 54 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/header/header.component.html + 255 - libs/ui/src/lib/activities-table/activities-table.component.html - 160 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 - - - Details - Details - apps/client/src/app/components/access-table/access-table.component.html - 32 + apps/client/src/app/pages/accounts/accounts-page.html + 4 - - - Revoke - Revoke - apps/client/src/app/components/access-table/access-table.component.html - 59 + libs/ui/src/lib/assistant/assistant.html + 107 - - Do you really want to revoke this granted access? - Do you really want to revoke this granted access? + + Do you really want to delete this platform? + Do you really want to delete this platform? - apps/client/src/app/components/access-table/access-table.component.ts - 50 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 86 - - Cash Balance - Cash Balance + + Update platform + Update platform - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 45 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 + + + Add platform + Add platform - apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 + + + Platforms + Platforms - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Equity - Equity + + Tags + Tags - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 56 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 10 - - - Activities - Activities - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 61 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 393 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 90 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 383 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + libs/ui/src/lib/assistant/assistant.html + 127 + + + Add Tag + Add Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/components/admin-users/admin-users.html - 134 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + Update tag - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Add tag - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Do you really want to delete this user? + Do you really want to delete this user? - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + apps/client/src/app/components/admin-users/admin-users.component.ts + 125 - - Platform - Platform + + User + User - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 65 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Registration + Registration - apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + apps/client/src/app/components/admin-users/admin-users.html + 97 + + + Engagement per Day + Engagement per Day - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/admin-users/admin-users.html + 157 - - Transfer Cash Balance - Transfer Cash Balance + + Last Request + Last Request - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/components/admin-users/admin-users.html + 181 + + + Impersonate User + Impersonate User - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/components/admin-users/admin-users.html + 218 - - Name - Name + + Delete User + Delete User - apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 + apps/client/src/app/components/admin-users/admin-users.html + 229 + + + Performance + Performance - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 91 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 + + + Compare with... + Compare with... - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 + + + Manage Benchmarks + Manage Benchmarks - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 + + + Portfolio + Portfel - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 116 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 + apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts + 41 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + Benchmark + Benchmark - libs/ui/src/lib/activities-table/activities-table.component.html - 137 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 128 + + + Current Market Mood + Current Market Mood - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 - - Total - Total + + Overview + Overview - apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + apps/client/src/app/components/header/header.component.html + 28 - - - Currency - Currency - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + apps/client/src/app/components/header/header.component.html + 237 + + + Portfolio + Portfolio - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + apps/client/src/app/components/header/header.component.html + 41 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + apps/client/src/app/components/header/header.component.html + 247 + + + Admin Control + Admin Control - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/header/header.component.html + 68 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + apps/client/src/app/components/header/header.component.html + 271 + + + Me + Me - libs/ui/src/lib/activities-table/activities-table.component.html - 275 + apps/client/src/app/components/header/header.component.html + 203 - - Value - Value + + User + User - apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + apps/client/src/app/components/header/header.component.html + 221 + + + My Ghostfolio + My Ghostfolio - apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + apps/client/src/app/components/header/header.component.html + 262 + + + About Ghostfolio + About Ghostfolio - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + apps/client/src/app/components/header/header.component.html + 303 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + Sign in + Sign in - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + apps/client/src/app/components/header/header.component.html + 394 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 + + + Get started + Get started - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + apps/client/src/app/components/header/header.component.html + 404 + + + Sign in + Sign in - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + apps/client/src/app/app-routing.module.ts + 141 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + apps/client/src/app/components/header/header.component.ts + 231 + + + Oops! Incorrect Security Token. + Ups! Nieprawidłowy token bezpieczeństwa. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + apps/client/src/app/components/header/header.component.ts + 246 - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 + + + Manage Activities + Manage Activities - libs/ui/src/lib/activities-table/activities-table.component.html - 256 + apps/client/src/app/components/home-holdings/home-holdings.html + 61 + + + Fear + Fear - libs/ui/src/lib/activities-table/activities-table.component.html - 292 + apps/client/src/app/components/home-market/home-market.component.ts + 27 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + libs/ui/src/lib/i18n.ts + 96 - - Edit - Edit + + Greed + Greed - apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + apps/client/src/app/components/home-market/home-market.component.ts + 28 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + libs/ui/src/lib/i18n.ts + 97 + + + Last Days + Last Days - apps/client/src/app/components/admin-overview/admin-overview.html - 80 + apps/client/src/app/components/home-market/home-market.html + 7 + + + Welcome to Ghostfolio + Witaj w Ghostfolio - apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Ready to take control of your personal finances? + Jesteś gotów przejąć kontrolę nad swoimi finansami osobistymi? - apps/client/src/app/components/admin-tag/admin-tag.component.html - 71 + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + Setup your accounts + Skonfiguruj swoje konta - libs/ui/src/lib/activities-table/activities-table.component.html - 429 + apps/client/src/app/components/home-overview/home-overview.html + 15 - - Delete - Delete + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Uzyskaj kompleksowy przegląd finansowy, poprzez dodanie swoich rachunków bankowych i maklerskich. - apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + Rejestruj swoje działania - apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Dokumentuj swoje działania inwestycyjne, aby zapewnić aktualność portfela. - apps/client/src/app/components/admin-overview/admin-overview.html - 90 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Monitoruj i analizuj swój portfel - apps/client/src/app/components/admin-overview/admin-overview.html - 199 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Śledź swój postęp w czasie rzeczywistym dzięki kompleksowym analizom i obserwacjom. - apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + Setup accounts + Konfiguracja kont - apps/client/src/app/components/admin-tag/admin-tag.component.html - 81 + apps/client/src/app/components/home-overview/home-overview.html + 44 + + + Add activity + Add activity - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/components/home-overview/home-overview.html + 52 - libs/ui/src/lib/activities-table/activities-table.component.html - 455 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 8 - - Do you really want to delete this account? - Do you really want to delete this account? + + Summary + Summary - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + apps/client/src/app/components/home-summary/home-summary.html + 2 - - Asset Profile - Asset Profile + + Total Amount + Total Amount - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 - - Historical Market Data - Historical Market Data + + Savings Rate + Savings Rate - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 213 - - Symbol - Symbol + + Security Token + Security Token - apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + or + or - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + apps/client/src/app/pages/landing/landing-page.html + 47 - - - Data Source - Data Source - apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + apps/client/src/app/pages/landing/landing-page.html + 450 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + apps/client/src/app/pages/register/register-page.html + 30 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + apps/client/src/app/pages/webauthn/webauthn-page.html + 29 - - Attempts - Attempts + + Sign in with Internet Identity + Sign in with Internet Identity - apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 - - Created - Created + + Sign in with Google + Sign in with Google - apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 - - Finished - Finished + + Stay signed in + Stay signed in - apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 - - Status - Status + + Time in Market + Time in Market - apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 - - Delete Jobs - Delete Jobs + + Buy + Buy - apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 - - View Data - View Data + + Sell + Sell - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 - - View Stacktrace - View Stacktrace + + Investment + Investment - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 168 - - - Delete Job - Delete Job - apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 58 - - Details for - Details for + + Absolute Gross Performance + Absolute Gross Performance - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 2 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 - - Date - Date + + Gross Performance + Gross Performance - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 6 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 85 + + + Fees + Fees - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 203 - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 108 - libs/ui/src/lib/activities-table/activities-table.component.html - 169 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 176 - - Market Price - Market Price + + Absolute Net Performance + Absolute Net Performance - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 26 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 126 + + + Net Performance + Net Performance - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 141 - - Cancel - Cancel + + Total Assets + Total Assets - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 46 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 167 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + + + Valuables + Valuables + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 180 + + + Emergency Fund + Emergency Fund - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 192 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + apps/client/src/app/pages/features/features-page.html + 89 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 122 + + + Cash + Cash - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 58 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 226 + + + + Assets + Assets + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + Buying Power + Buying Power - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 252 + + + Excluded from Analysis + Excluded from Analysis - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 264 + + + Liabilities + Liabilities - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 279 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + apps/client/src/app/pages/features/features-page.html + 102 - - Save - Save + + Net Worth + Net Worth - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 48 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 297 + + + Annualized Performance + Annualized Performance - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 309 + + + Interest + Interest - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + Dividend + Dividend - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 181 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 343 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 + apps/client/src/app/pages/features/features-page.html + 63 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + 271 - - Currencies - Currencies + + Please enter the amount of your emergency fund: + Please enter the amount of your emergency fund: - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 58 - - ETFs without Countries - ETFs without Countries + + Change + Change - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 65 - - - ETFs without Sectors - ETFs without Sectors - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 119 - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? + + Average Unit Price + Average Unit Price - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 103 - - Filter by... - Filter by... + + Minimum Price + Minimum Price - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 130 - - Asset Class - Asset Class + + Maximum Price + Maximum Price - apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 146 + + + Quantity + Quantity - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 156 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 188 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + libs/ui/src/lib/activities-table/activities-table.component.html + 185 + + + Report Data Glitch + Report Data Glitch - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 448 - - Asset Sub Class - Asset Sub Class + + Are you an ambitious investor who needs the full picture? + Jesteś ambitnym inwestorem, który potrzebuje pełnego obrazu swojej działalności? - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 12 + + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Przejdź na Ghostfolio Premium już dziś i uzyskaj dostęp do ekskluzywnych funkcji, które wzbogacą Twoje doświadczenie inwestycyjne: - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 15 + + + Portfolio Summary + Podsumowanie Portfela - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 22 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + apps/client/src/app/pages/pricing/pricing-page.html + 57 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + apps/client/src/app/pages/pricing/pricing-page.html + 203 - - First Activity - First Activity + + Portfolio Allocations + Portfolio Allocations - apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 26 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + apps/client/src/app/pages/features/features-page.html + 161 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + apps/client/src/app/pages/pricing/pricing-page.html + 61 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 + apps/client/src/app/pages/pricing/pricing-page.html + 207 - - Activities Count - Activities Count + + Performance Benchmarks + Performance Benchmarks - apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 30 - - - Historical Data - Historical Data - apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + apps/client/src/app/pages/pricing/pricing-page.html + 65 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + apps/client/src/app/pages/pricing/pricing-page.html + 211 - - Sectors Count - Sectors Count + + FIRE Calculator + FIRE Kalkulator - apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 34 - - - Countries Count - Countries Count - apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + apps/client/src/app/pages/pricing/pricing-page.html + 69 - - - Gather Recent Data - Gather Recent Data - apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + apps/client/src/app/pages/pricing/pricing-page.html + 215 - - Gather All Data - Gather All Data + + Professional Data Provider + Professional Data Provider - apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 38 + + + apps/client/src/app/pages/pricing/pricing-page.html + 230 - - Gather Profile Data - Gather Profile Data + + and more Features... + i więcej Funkcji ... - apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 42 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 + apps/client/src/app/pages/pricing/pricing-page.html + 85 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 235 - - Refresh - Refresh + + Get the tools to effectively manage your finances and refine your personal investment strategy. + Uzyskaj narzędzia do skutecznego zarządzania swoimi finansami i udoskonal swoją osobistą strategię inwestycyjną. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 22 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 45 - - Gather Historical Data - Gather Historical Data + + Skip + Pomiń - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 32 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 52 - - Import - Import + + Upgrade Plan + Upgrade Plan - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 + apps/client/src/app/components/header/header.component.html + 178 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 59 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 16 - - - Sector - Sector - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + apps/client/src/app/pages/pricing/pricing-page.html + 271 + + + Today + Today - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + apps/client/src/app/components/toggle/toggle.component.ts + 22 - - - Country - Country - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + libs/ui/src/lib/assistant/assistant.component.ts + 215 + + + YTD + YTD - apps/client/src/app/components/admin-users/admin-users.html - 77 + apps/client/src/app/components/toggle/toggle.component.ts + 23 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + libs/ui/src/lib/assistant/assistant.component.ts + 225 - - Sectors - Sectors + + 1Y + 1Y - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + apps/client/src/app/components/toggle/toggle.component.ts + 24 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + 5Y + 5Y - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + apps/client/src/app/components/toggle/toggle.component.ts + 25 - apps/client/src/app/pages/public/public-page.html - 45 + libs/ui/src/lib/assistant/assistant.component.ts + 250 - - Countries - Countries - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 - + + Max + Max - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + apps/client/src/app/components/toggle/toggle.component.ts + 26 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + libs/ui/src/lib/assistant/assistant.component.ts + 253 - - Benchmark - Benchmark + + Grant access + Grant access - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 - - Symbol Mapping - Symbol Mapping + + Public + Public - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 - - Scraper Configuration - Scraper Configuration + + Granted Access + Granted Access - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 - - Note - Note + + Please enter your coupon code: + Please enter your coupon code: - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 118 + + + Could not redeem coupon code + Nie udało się zrealizować kodu kuponu - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 + + + Coupon code has been redeemed + Coupon code has been redeemed - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 140 - - Add Asset Profile - Add Asset Profile + + Reload + Reload - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 141 - - Search - Search + + per year + per year - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 33 - - - Add Manually - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/pricing/pricing-page.html + 257 - - Name, symbol or ISIN - Name, symbol or ISIN - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 - + + Try Premium + Try Premium - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 40 - - Please add a currency: - Please add a currency: + + Redeem Coupon + Redeem Coupon - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 54 - - Do you really want to delete this coupon? - Do you really want to delete this coupon? + + Auto + Auto - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 38 - - Do you really want to delete this currency? - Do you really want to delete this currency? + + Do you really want to remove this sign in method? + Do you really want to remove this sign in method? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 252 - - Do you really want to delete this system message? - Do you really want to delete this system message? + + Settings + Ustawienia - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 - - Do you really want to flush the cache? - Do you really want to flush the cache? + + Presenter View + Widok Prezentera - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 - - Please set your system message: - Please set your system message: + + Protection for sensitive information like absolute performances and quantity values + Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 - - Version - Version + + Base Currency + Waluta Bazowa - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 - - User Count - User Count + + Language + Język - apps/client/src/app/components/admin-overview/admin-overview.html - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 - - Activity Count - Activity Count + + Locale + Ustawienia Regionalne - apps/client/src/app/components/admin-overview/admin-overview.html - 23 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 - - per User - per User + + Date and number format + Date and number format - apps/client/src/app/components/admin-overview/admin-overview.html - 32 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 - - Exchange Rates - Exchange Rates + + Appearance + Wygląd (tryb) - apps/client/src/app/components/admin-overview/admin-overview.html - 37 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 148 - - Add Currency - Add Currency + + Auto + Auto - apps/client/src/app/components/admin-overview/admin-overview.html - 104 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 162 - - User Signup - User Signup + + Light + Jasny - apps/client/src/app/components/admin-overview/admin-overview.html - 110 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 163 - - Read-only Mode - Read-only Mode + + Dark + Ciemny - apps/client/src/app/components/admin-overview/admin-overview.html - 123 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 164 - - System Message - System Message + + Zen Mode + Tryb Zen - apps/client/src/app/components/admin-overview/admin-overview.html - 145 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 173 - - - Set Message - Set Message - apps/client/src/app/components/admin-overview/admin-overview.html - 165 + apps/client/src/app/pages/features/features-page.html + 191 - - Coupons - Coupons + + Distraction-free experience for turbulent times + Distraction-free experience for turbulent times - apps/client/src/app/components/admin-overview/admin-overview.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 174 - - Add - Add - - apps/client/src/app/components/admin-overview/admin-overview.html - 231 - + + Biometric Authentication + Uwierzytelnianie Biometryczne - libs/ui/src/lib/account-balances/account-balances.component.html - 93 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 - - Housekeeping - Housekeeping + + Sign in with fingerprint + Zaloguj się za pomocą linii papilarnych - apps/client/src/app/components/admin-overview/admin-overview.html - 238 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 - - Flush Cache - Flush Cache + + Experimental Features + Funkcje Eksperymentalne - apps/client/src/app/components/admin-overview/admin-overview.html - 242 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 207 - - Add Platform - Add Platform + + Sneak peek at upcoming functionality + Włącz podgląd nadchodzących funkcji - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 208 - - Url - Url + + User ID + ID Użytkownika - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 224 + + + Export Data + Eksportuj Dane - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 - - Accounts - Accounts + + This feature is currently unavailable. + Ta funkcja jest obecnie niedostępna. - apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 + apps/client/src/app/core/http-response.interceptor.ts + 53 + + + Please try again later. + Spróbuj ponownie później. - apps/client/src/app/components/admin-users/admin-users.html - 113 + apps/client/src/app/core/http-response.interceptor.ts + 55 - apps/client/src/app/components/header/header.component.html - 54 + apps/client/src/app/core/http-response.interceptor.ts + 80 - apps/client/src/app/components/header/header.component.html - 262 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 138 + + + Oops! Something went wrong. + Ups! Coś poszło nie tak. - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 + apps/client/src/app/core/http-response.interceptor.ts + 78 - apps/client/src/app/pages/accounts/accounts-page.html - 4 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 136 + + + Okay + Okay - libs/ui/src/lib/assistant/assistant.html - 107 + apps/client/src/app/core/http-response.interceptor.ts + 81 - - - Do you really want to delete this platform? - Do you really want to delete this platform? - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 139 - - Update platform - Update platform + + About + About - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 + apps/client/src/app/pages/about/about-page-routing.module.ts + 51 - - - Add platform - Add platform - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + apps/client/src/app/pages/about/about-page.component.ts + 44 - - - Platforms - Platforms - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts + 13 - - Tags - Tags + + Changelog + Changelog - apps/client/src/app/components/admin-settings/admin-settings.component.html - 10 + apps/client/src/app/pages/about/about-page.component.ts + 49 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 + apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts + 13 + + + License + License - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 + apps/client/src/app/pages/about/about-page.component.ts + 54 - libs/ui/src/lib/assistant/assistant.html - 127 + apps/client/src/app/pages/about/license/license-page-routing.module.ts + 13 - - Add Tag - Add Tag + + Privacy Policy + Polityka Prywatności - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/about/about-page.component.ts + 62 - - - Do you really want to delete this tag? - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts + 13 - - Update tag - Update tag + + Our + Our - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 - - Add tag - Add tag + + Discover other exciting Open Source Software projects + Discover other exciting Open Source Software projects - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 - - Do you really want to delete this user? - Do you really want to delete this user? + + Visit + Visit - apps/client/src/app/components/admin-users/admin-users.component.ts - 113 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 - - User - User + + Accounts + Accounts - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/accounts/accounts-page-routing.module.ts + 13 - - Registration - Registration + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/components/admin-users/admin-users.html - 96 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 - - Engagement per Day - Engagement per Day + + Update account + Update account - apps/client/src/app/components/admin-users/admin-users.html - 158 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 - - Last Request - Last Request + + Add account + Add account - apps/client/src/app/components/admin-users/admin-users.html - 183 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 10 - - Impersonate User - Impersonate User + + Account ID + Account ID - apps/client/src/app/components/admin-users/admin-users.html - 222 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 96 - - Delete User - Delete User + + From + From - apps/client/src/app/components/admin-users/admin-users.html - 232 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 - - Performance - Performance - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 6 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 - + + To + To - libs/ui/src/lib/holdings-table/holdings-table.component.html - 142 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 - - Compare with... - Compare with... + + Transfer + Transfer - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 - - Manage Benchmarks - Manage Benchmarks + + Admin Control + Admin Control - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 20 - - Portfolio - Portfolio + + Market Data + Market Data - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 116 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 30 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 41 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Benchmark - Benchmark + + Settings + Settings - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 128 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 35 - - - Current Market Mood - Current Market Mood - apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html - 12 + apps/client/src/app/pages/admin/admin-page.component.ts + 32 - - - Overview - Overview - apps/client/src/app/components/header/header.component.html - 28 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 18 - apps/client/src/app/components/header/header.component.html - 244 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 35 - - Portfolio - Portfolio + + Users + Users - apps/client/src/app/components/header/header.component.html - 41 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 40 - apps/client/src/app/components/header/header.component.html - 254 + apps/client/src/app/pages/admin/admin-page.component.ts + 47 - - Admin Control - Admin Control + + Overview + Overview - apps/client/src/app/components/header/header.component.html - 67 + apps/client/src/app/pages/admin/admin-page.component.ts + 27 - apps/client/src/app/components/header/header.component.html - 278 + apps/client/src/app/pages/home/home-page.component.ts + 37 + + + apps/client/src/app/pages/zen/zen-page-routing.module.ts + 19 + + + apps/client/src/app/pages/zen/zen-page.component.ts + 34 - - Me - Me + + Blog + Blog - apps/client/src/app/components/header/header.component.html - 211 + apps/client/src/app/pages/blog/blog-page-routing.module.ts + 13 - - User - User + + Discover the latest Ghostfolio updates and insights on personal finance + Discover the latest Ghostfolio updates and insights on personal finance - apps/client/src/app/components/header/header.component.html - 230 + apps/client/src/app/pages/blog/blog-page.html + 7 - - My Ghostfolio - My Ghostfolio + + As you are already logged in, you cannot access the demo account. + As you are already logged in, you cannot access the demo account. - apps/client/src/app/components/header/header.component.html - 269 + apps/client/src/app/pages/demo/demo-page.component.ts + 35 - - About Ghostfolio - About Ghostfolio + + Frequently Asked Questions (FAQ) + Frequently Asked Questions (FAQ) - apps/client/src/app/components/header/header.component.html - 309 + apps/client/src/app/pages/faq/faq-page-routing.module.ts + 34 - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 + apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts + 13 - - Sign in - Sign in + + Frequently Asked Questions (FAQ) + Frequently Asked Questions (FAQ) - apps/client/src/app/components/header/header.component.html - 399 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 71 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - - - Get started - Get started - apps/client/src/app/components/header/header.component.html - 411 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 - - Sign in - Sign in + + Features + Features apps/client/src/app/app-routing.module.ts - 141 - - - apps/client/src/app/components/header/header.component.ts - 229 + 65 - - Oops! Incorrect Security Token. - Oops! Incorrect Security Token. + + Check out the numerous features of Ghostfolio to manage your wealth + Check out the numerous features of Ghostfolio to manage your wealth - apps/client/src/app/components/header/header.component.ts - 243 + apps/client/src/app/pages/features/features-page.html + 6 - - Manage Activities - Manage Activities + + Stocks + Stocks - apps/client/src/app/components/home-holdings/home-holdings.html - 32 + apps/client/src/app/pages/features/features-page.html + 15 - - Fear - Fear + + ETFs + ETFs - apps/client/src/app/components/home-market/home-market.component.ts + apps/client/src/app/pages/features/features-page.html 25 + + + Bonds + Bonds - libs/ui/src/lib/i18n.ts - 71 + apps/client/src/app/pages/features/features-page.html + 38 - - Greed - Greed + + Cryptocurrencies + Cryptocurrencies - apps/client/src/app/components/home-market/home-market.component.ts - 26 + apps/client/src/app/pages/features/features-page.html + 51 + + + Wealth Items + Wealth Items - libs/ui/src/lib/i18n.ts - 72 + apps/client/src/app/pages/features/features-page.html + 76 - - Last Days - Last Days + + Import and Export + Import and Export - apps/client/src/app/components/home-market/home-market.html - 6 + apps/client/src/app/pages/features/features-page.html + 115 - - Welcome to Ghostfolio - Welcome to Ghostfolio + + Multi-Accounts + Multi-Accounts - apps/client/src/app/components/home-overview/home-overview.html - 7 + apps/client/src/app/pages/features/features-page.html + 127 - - Ready to take control of your personal finances? - Ready to take control of your personal finances? + + Portfolio Calculations + Portfolio Calculations - apps/client/src/app/components/home-overview/home-overview.html - 8 + apps/client/src/app/pages/features/features-page.html + 141 - - Setup your accounts - Setup your accounts + + Dark Mode + Dark Mode - apps/client/src/app/components/home-overview/home-overview.html - 15 + apps/client/src/app/pages/features/features-page.html + 178 - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Get a comprehensive financial overview by adding your bank and brokerage accounts. + + Market Mood + Market Mood - apps/client/src/app/components/home-overview/home-overview.html - 17 + apps/client/src/app/pages/features/features-page.html + 206 - - Capture your activities - Capture your activities + + Static Analysis + Static Analysis - apps/client/src/app/components/home-overview/home-overview.html - 24 + apps/client/src/app/pages/features/features-page.html + 225 - - Record your investment activities to keep your portfolio up to date. - Record your investment activities to keep your portfolio up to date. + + Multi-Language + Multi-Language - apps/client/src/app/components/home-overview/home-overview.html - 26 + apps/client/src/app/pages/features/features-page.html + 242 - - Monitor and analyze your portfolio - Monitor and analyze your portfolio + + Open Source Software + Open Source Software - apps/client/src/app/components/home-overview/home-overview.html - 33 + apps/client/src/app/pages/features/features-page.html + 278 - - Track your progress in real-time with comprehensive analysis and insights. - Track your progress in real-time with comprehensive analysis and insights. + + Get Started + Get Started - apps/client/src/app/components/home-overview/home-overview.html - 35 + apps/client/src/app/pages/features/features-page.html + 303 - - - Setup accounts - Setup accounts - apps/client/src/app/components/home-overview/home-overview.html - 48 + apps/client/src/app/pages/public/public-page.html + 164 - - Add activity - Add activity + + Holdings + Holdings - apps/client/src/app/components/home-overview/home-overview.html - 56 + apps/client/src/app/pages/home/home-page-routing.module.ts + 23 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 8 + apps/client/src/app/pages/home/home-page-routing.module.ts + 28 - - - This feature requires a subscription. - This feature requires a subscription. - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 + apps/client/src/app/pages/home/home-page.component.ts + 42 - apps/client/src/app/core/http-response.interceptor.ts - 69 + apps/client/src/app/pages/zen/zen-page.component.ts + 39 - - Upgrade Plan - Upgrade Plan + + Summary + Summary - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 + apps/client/src/app/pages/home/home-page-routing.module.ts + 33 - apps/client/src/app/core/http-response.interceptor.ts - 72 + apps/client/src/app/pages/home/home-page.component.ts + 47 - - Summary - Summary + + Markets + Rynki - apps/client/src/app/components/home-summary/home-summary.html - 2 + apps/client/src/app/pages/home/home-page-routing.module.ts + 38 - - - Total Amount - Total Amount - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 + apps/client/src/app/pages/home/home-page.component.ts + 52 - - - Savings Rate - Savings Rate - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 + apps/client/src/app/pages/markets/markets-page-routing.module.ts + 13 - - Security Token - Security Token + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 11 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - or - or + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Manage your wealth like a boss + Manage your wealth like a boss apps/client/src/app/pages/landing/landing-page.html - 423 + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started + Get Started - apps/client/src/app/pages/register/register-page.html - 29 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + apps/client/src/app/pages/pricing/pricing-page.html + 298 - - Sign in with Internet Identity - Sign in with Internet Identity + + Live Demo + Live Demo - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 42 + apps/client/src/app/pages/landing/landing-page.html + 49 - - - Sign in with Google - Sign in with Google - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 52 + apps/client/src/app/pages/landing/landing-page.html + 451 - - Stay signed in - Stay signed in + + Monthly Active Users + Monthly Active Users - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 61 + apps/client/src/app/pages/landing/landing-page.html + 70 - - Time in Market - Time in Market + + Stars on GitHub + Stars on GitHub - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 3 + apps/client/src/app/pages/landing/landing-page.html + 88 - - - Buy - Buy - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 31 + apps/client/src/app/pages/open/open-page.html + 103 - - Sell - Sell + + Pulls on Docker Hub + Pulls on Docker Hub - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 43 + apps/client/src/app/pages/landing/landing-page.html + 106 - - - Investment - Investment - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + apps/client/src/app/pages/open/open-page.html + 117 + + + As seen in + As seen in - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 58 + apps/client/src/app/pages/landing/landing-page.html + 115 - - Absolute Gross Performance - Absolute Gross Performance + + Protect your assets. Refine your personal investment strategy. + Protect your assets. Refine your personal investment strategy. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 70 + apps/client/src/app/pages/landing/landing-page.html + 225 - - Gross Performance - Gross Performance + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 85 + apps/client/src/app/pages/landing/landing-page.html + 229 - - Fees - Fees + + 360° View + 360° View - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Get the full picture of your personal finances across multiple platforms. + Get the full picture of your personal finances across multiple platforms. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 108 + apps/client/src/app/pages/landing/landing-page.html + 242 + + + Web3 Ready + Web3 Ready - apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 + apps/client/src/app/pages/landing/landing-page.html + 251 - - Absolute Net Performance - Absolute Net Performance + + Use Ghostfolio anonymously and own your financial data. + Use Ghostfolio anonymously and own your financial data. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 + apps/client/src/app/pages/landing/landing-page.html + 253 - - Net Performance - Net Performance + + Open Source + Open Source - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 + apps/client/src/app/pages/landing/landing-page.html + 261 - - Total Assets - Total Assets + + Benefit from continuous improvements through a strong community. + Benefit from continuous improvements through a strong community. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 + apps/client/src/app/pages/landing/landing-page.html + 263 - - Valuables - Valuables + + Why Ghostfolio? + Why Ghostfolio? - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 + apps/client/src/app/pages/landing/landing-page.html + 272 - - Emergency Fund - Emergency Fund + + Ghostfolio is for you if you are... + Ghostfolio is for you if you are... - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + trading stocks, ETFs or cryptocurrencies on multiple platforms - apps/client/src/app/pages/features/features-page.html - 89 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy + pursuing a buy & hold strategy - apps/client/src/app/pages/portfolio/fire/fire-page.html - 122 + apps/client/src/app/pages/landing/landing-page.html + 286 - - Cash - Cash + + interested in getting insights of your portfolio composition + interested in getting insights of your portfolio composition - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 + apps/client/src/app/pages/landing/landing-page.html + 291 - - Assets - Assets + + valuing privacy and data ownership + valuing privacy and data ownership - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 + apps/client/src/app/pages/landing/landing-page.html + 296 - - Buying Power - Buying Power + + into minimalism + into minimalism - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 + apps/client/src/app/pages/landing/landing-page.html + 299 - - Excluded from Analysis - Excluded from Analysis + + caring about diversifying your financial resources + caring about diversifying your financial resources - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 + apps/client/src/app/pages/landing/landing-page.html + 303 - - Liabilities - Liabilities + + interested in financial independence + interested in financial independence - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in + saying no to spreadsheets in - apps/client/src/app/pages/features/features-page.html - 102 + apps/client/src/app/pages/landing/landing-page.html + 311 - - Net Worth - Net Worth + + still reading this list + still reading this list - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 + apps/client/src/app/pages/landing/landing-page.html + 314 - - Annualized Performance - Annualized Performance + + Learn more about Ghostfolio + Learn more about Ghostfolio - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 + apps/client/src/app/pages/landing/landing-page.html + 319 - - Interest - Interest + + What our users are saying + What our users are saying - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 + apps/client/src/app/pages/landing/landing-page.html + 327 - - Dividend - Dividend + + Members from around the globe are using Ghostfolio Premium + Members from around the globe are using Ghostfolio Premium - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + How does Ghostfolio work? - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Get started in only 3 steps + Get started in only 3 steps - apps/client/src/app/pages/features/features-page.html - 63 + apps/client/src/app/pages/landing/landing-page.html + 386 + + + Sign up anonymously* + Sign up anonymously* - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 + apps/client/src/app/pages/landing/landing-page.html + 392 + + + * no e-mail address nor credit card required + * no e-mail address nor credit card required - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 + apps/client/src/app/pages/landing/landing-page.html + 394 - - Please enter the amount of your emergency fund: - Please enter the amount of your emergency fund: + + Add any of your historical transactions + Add any of your historical transactions - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 + apps/client/src/app/pages/landing/landing-page.html + 405 - - Change - Change + + Get valuable insights of your portfolio composition + Get valuable insights of your portfolio composition - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 + apps/client/src/app/pages/landing/landing-page.html + 417 + + + Are you ready? + Czy jesteś gotów? - libs/ui/src/lib/holdings-table/holdings-table.component.html - 119 + apps/client/src/app/pages/landing/landing-page.html + 431 - - Average Unit Price - Average Unit Price + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 + apps/client/src/app/pages/open/open-page.html + 6 - - Minimum Price - Minimum Price + + (Last 24 hours) + (Ostatnie 24 godziny) - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 + apps/client/src/app/pages/open/open-page.html + 37 - - Maximum Price - Maximum Price + + Active Users + Aktywni Użytkownicy - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 + apps/client/src/app/pages/open/open-page.html + 40 - - - Quantity - Quantity - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 + apps/client/src/app/pages/open/open-page.html + 62 + + + (Last 30 days) + (Ostatnie 30 dni) - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 + apps/client/src/app/pages/open/open-page.html + 48 - libs/ui/src/lib/activities-table/activities-table.component.html - 185 + apps/client/src/app/pages/open/open-page.html + 59 - - Report Data Glitch - Report Data Glitch + + New Users + Nowi Użytkownicy - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 + apps/client/src/app/pages/open/open-page.html + 51 - - Are you an ambitious investor who needs the full picture? - Are you an ambitious investor who needs the full picture? + + Users in Slack community + Users in Slack community - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 12 + apps/client/src/app/pages/open/open-page.html + 75 - - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + + Contributors on GitHub + Contributors on GitHub - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 15 + apps/client/src/app/pages/open/open-page.html + 89 - - Portfolio Summary - Portfolio Summary + + (Last 90 days) + (Ostatnie 90 dni) - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 22 - - - apps/client/src/app/pages/pricing/pricing-page.html - 55 + apps/client/src/app/pages/open/open-page.html + 127 + + + Uptime + Uptime - apps/client/src/app/pages/pricing/pricing-page.html - 199 + apps/client/src/app/pages/open/open-page.html + 132 - - Portfolio Allocations - Portfolio Allocations + + Activities + Activities - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 26 + apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts + 13 - apps/client/src/app/pages/features/features-page.html - 160 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 39 + + + Do you really want to delete these activities? + Do you really want to delete these activities? - apps/client/src/app/pages/pricing/pricing-page.html - 59 + libs/ui/src/lib/activities-table/activities-table.component.ts + 225 + + + Update activity + Update activity - apps/client/src/app/pages/pricing/pricing-page.html - 203 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 - - Performance Benchmarks - Performance Benchmarks + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Stocks, ETFs, bonds, cryptocurrencies, commodities - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 30 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/pricing/pricing-page.html - 63 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/pricing/pricing-page.html - 207 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 - - FIRE Calculator - FIRE Calculator + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 34 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/pricing/pricing-page.html - 67 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Mortgages, personal loans, credit cards + Mortgages, personal loans, credit cards - apps/client/src/app/pages/pricing/pricing-page.html - 211 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 - - Professional Data Provider - Professional Data Provider + + Luxury items, real estate, private companies + Luxury items, real estate, private companies - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 38 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Account + Account - apps/client/src/app/pages/pricing/pricing-page.html - 226 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 307 - - and more Features... - and more Features... + + Update Cash Balance + Update Cash Balance - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 42 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 + + + Unit Price + Unit Price - apps/client/src/app/pages/pricing/pricing-page.html - 83 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 213 - apps/client/src/app/pages/pricing/pricing-page.html - 231 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 286 - - - Get the tools to effectively manage your finances and refine your personal investment strategy. - Get the tools to effectively manage your finances and refine your personal investment strategy. - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 45 + libs/ui/src/lib/activities-table/activities-table.component.html + 209 - - Skip - Skip + + Oops! Could not get the historical exchange rate from + Ups! Nie udało się uzyskać historycznego kursu wymiany z - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 52 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 - - Upgrade Plan - Upgrade Plan + + Fee + Fee - apps/client/src/app/components/header/header.component.html - 182 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 59 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 330 - apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + libs/ui/src/lib/activities-table/activities-table.component.html + 233 + + + Oops! Could not get the historical exchange rate from + Ups! Nie udało się uzyskać historycznego kursu wymiany z - apps/client/src/app/pages/pricing/pricing-page.html - 268 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 240 - - Today - Today + + Import Activities + Import Activities - apps/client/src/app/components/toggle/toggle.component.ts - 22 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 45 + + + Import Dividends + Import Dividends - libs/ui/src/lib/assistant/assistant.component.ts - 215 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 86 - - YTD - YTD + + Importing data... + Importing data... - apps/client/src/app/components/toggle/toggle.component.ts - 23 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 120 + + + Import has been completed + Import has been completed - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 128 - - 1Y - 1Y + + Validating data... + Validating data... - apps/client/src/app/components/toggle/toggle.component.ts - 24 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 234 + + + Select Holding + Select Holding - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 - - 5Y - 5Y + + Select File + Select File - apps/client/src/app/components/toggle/toggle.component.ts - 25 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 + + + Holding + Holding - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 - - Max - Max + + Load Dividends + Load Dividends - apps/client/src/app/components/toggle/toggle.component.ts - 26 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 + + + Choose or drop a file here + Choose or drop a file here - libs/ui/src/lib/assistant/assistant.component.ts - 253 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 - - Grant access - Grant access - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 - - - - Public - Public - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - - - - Granted Access - Granted Access - - apps/client/src/app/components/user-account-access/user-account-access.html - 5 - - - - Please enter your coupon code: - Please enter your coupon code: - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 - - - - Could not redeem coupon code - Could not redeem coupon code - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 - - - - Coupon code has been redeemed - Coupon code has been redeemed - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 - - - - Reload - Reload - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 - - - - per year - per year - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 - - - apps/client/src/app/pages/pricing/pricing-page.html - 254 - - - - Try Premium - Try Premium - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 - - - - Redeem Coupon - Redeem Coupon - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 - - - - Auto - Auto - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 - - - - Do you really want to remove this sign in method? - Do you really want to remove this sign in method? - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 - - - - Settings - Settings - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - Presenter View - Presenter View - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 7 - - - - Protection for sensitive information like absolute performances and quantity values - Protection for sensitive information like absolute performances and quantity values - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 8 - - - - Base Currency - Base Currency - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 27 - - - - Language - Language - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 - - - - Locale - Locale - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 - - - - Date and number format - Date and number format - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 - - - - Appearance - Appearance - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 - - - - Auto - Auto - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 - - - - Light - Light - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 - - - - Dark - Dark - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 - - - - Zen Mode - Zen Mode - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 - - - apps/client/src/app/pages/features/features-page.html - 190 - - - - Distraction-free experience for turbulent times - Distraction-free experience for turbulent times - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 - - - - Biometric Authentication - Biometric Authentication - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - Sign in with fingerprint - Sign in with fingerprint - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 - - - - Experimental Features - Experimental Features - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 - - - - Sneak peek at upcoming functionality - Sneak peek at upcoming functionality - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 - - - - User ID - User ID - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 45 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 - - - - Export Data - Export Data - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - This feature is currently unavailable. - This feature is currently unavailable. - - apps/client/src/app/core/http-response.interceptor.ts - 60 - - - - Please try again later. - Please try again later. - - apps/client/src/app/core/http-response.interceptor.ts - 62 - - - apps/client/src/app/core/http-response.interceptor.ts - 91 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 138 - - - - Oops! Something went wrong. - Oops! Something went wrong. - - apps/client/src/app/core/http-response.interceptor.ts - 89 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 136 - - - - Okay - Okay - - apps/client/src/app/core/http-response.interceptor.ts - 92 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 139 - - - - About - About - - apps/client/src/app/pages/about/about-page-routing.module.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 44 - - - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 - - - - Changelog - Changelog - - apps/client/src/app/pages/about/about-page.component.ts - 49 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 - - - - License - License - - apps/client/src/app/pages/about/about-page.component.ts - 54 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 - - - - Privacy Policy - Privacy Policy - - apps/client/src/app/pages/about/about-page.component.ts - 62 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 - - - - Our - Our - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Discover other exciting Open Source Software projects - Discover other exciting Open Source Software projects - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Visit - Visit - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Accounts - Accounts - - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 - - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 - - - - Update account - Update account - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 8 - - - - Add account - Add account - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 10 - - - - Account ID - Account ID - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 96 - - - - From - From - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - To - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 - - - - Transfer - Transfer - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 - - - - Admin Control - Admin Control - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 - - - - Market Data - Market Data - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 37 - - - - Settings - Settings - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 32 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 35 - - - - Users - Users - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 47 - - - - Overview - Overview - - apps/client/src/app/pages/admin/admin-page.component.ts - 27 - - - apps/client/src/app/pages/home/home-page.component.ts - 37 - - - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 - - - apps/client/src/app/pages/zen/zen-page.component.ts - 34 - - - - Blog - Blog - - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 - - - - Discover the latest Ghostfolio updates and insights on personal finance - Discover the latest Ghostfolio updates and insights on personal finance - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - As you are already logged in, you cannot access the demo account. - As you are already logged in, you cannot access the demo account. - - apps/client/src/app/pages/demo/demo-page.component.ts - 35 - - - - Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - - - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts - 13 - - - - Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Features - Features - - apps/client/src/app/app-routing.module.ts - 65 - - - - Check out the numerous features of Ghostfolio to manage your wealth - Check out the numerous features of Ghostfolio to manage your wealth - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Stocks - Stocks - - apps/client/src/app/pages/features/features-page.html - 15 - - - - ETFs - ETFs - - apps/client/src/app/pages/features/features-page.html - 25 - - - - Bonds - Bonds - - apps/client/src/app/pages/features/features-page.html - 38 - - - - Cryptocurrencies - Cryptocurrencies - - apps/client/src/app/pages/features/features-page.html - 51 - - - - Wealth Items - Wealth Items - - apps/client/src/app/pages/features/features-page.html - 76 - - - - Import and Export - Import and Export - - apps/client/src/app/pages/features/features-page.html - 115 - - - - Multi-Accounts - Multi-Accounts - - apps/client/src/app/pages/features/features-page.html - 127 - - - - Portfolio Calculations - Portfolio Calculations - - apps/client/src/app/pages/features/features-page.html - 141 - - - - Dark Mode - Dark Mode - - apps/client/src/app/pages/features/features-page.html - 177 - - - - Market Mood - Market Mood - - apps/client/src/app/pages/features/features-page.html - 205 - - - - Static Analysis - Static Analysis - - apps/client/src/app/pages/features/features-page.html - 224 - - - - Multi-Language - Multi-Language - - apps/client/src/app/pages/features/features-page.html - 241 - - - - Open Source Software - Open Source Software - - apps/client/src/app/pages/features/features-page.html - 275 - - - - Get Started - Get Started - - apps/client/src/app/pages/features/features-page.html - 300 - - - apps/client/src/app/pages/public/public-page.html - 153 - - - - Holdings - Holdings - - apps/client/src/app/pages/home/home-page-routing.module.ts - 23 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 42 - - - apps/client/src/app/pages/zen/zen-page.component.ts - 39 - - - - Summary - Summary - - apps/client/src/app/pages/home/home-page-routing.module.ts - 33 - - - apps/client/src/app/pages/home/home-page.component.ts - 47 - - - - Markets - Markets - - apps/client/src/app/pages/home/home-page-routing.module.ts - 38 - - - apps/client/src/app/pages/home/home-page.component.ts - 52 - - - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Open Source Wealth Management Software - Open Source Wealth Management Software - - apps/client/src/app/pages/i18n/i18n-page.html - 14 - - - - Manage your wealth like a boss - Manage your wealth like a boss - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - Get Started - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - or - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Live Demo - Live Demo - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Monthly Active Users - Monthly Active Users - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - Stars on GitHub - Stars on GitHub - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - Pulls on Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - As seen in - As seen in - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - Protect your assets. Refine your personal investment strategy. - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - 360° View - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Web3 Ready - Web3 Ready - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - Use Ghostfolio anonymously and own your financial data. - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - Open Source - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - Benefit from continuous improvements through a strong community. - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - Why Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - Ghostfolio is for you if you are... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - pursuing a buy & hold strategy - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - valuing privacy and data ownership - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - into minimalism - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - caring about diversifying your financial resources - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - interested in financial independence - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - saying no to spreadsheets in - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - still reading this list - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - Learn more about Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - What our users are saying - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - How does Ghostfolio work? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Get started in only 3 steps - Get started in only 3 steps - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - Sign up anonymously* - Sign up anonymously* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - * no e-mail address nor credit card required - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - Add any of your historical transactions - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - Are you ready? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - Join now or check out the example account - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - - apps/client/src/app/pages/open/open-page.html - 6 - - - - (Last 24 hours) - (Last 24 hours) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - Active Users - Active Users - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - (Last 30 days) - (Last 30 days) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - New Users - New Users - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Users in Slack community - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - Contributors on GitHub - - apps/client/src/app/pages/open/open-page.html - 89 - - - - (Last 90 days) - (Last 90 days) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Uptime - Uptime - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Activities - Activities - - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 39 - - - - Do you really want to delete these activities? - Do you really want to delete these activities? - - libs/ui/src/lib/activities-table/activities-table.component.ts - 216 - - - - Update activity - Update activity - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - One-time fee, annual account fees - One-time fee, annual account fees - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - Distribution of corporate earnings - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Revenue for lending out money - Revenue for lending out money - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - Luxury items, real estate, private companies - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Account - Account - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 307 - - - - Update Cash Balance - Update Cash Balance - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 - - - - Unit Price - Unit Price - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 209 - - - - Oops! Could not get the historical exchange rate from - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - Fee - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 233 - - - - Oops! Could not get the historical exchange rate from - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 - - - - Import Activities - Import Activities - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 - - - - Import Dividends - Import Dividends - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 86 - - - - Importing data... - Importing data... - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 120 - - - - Import has been completed - Import has been completed - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 128 - - - - Validating data... - Validating data... - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 - - - - Select Holding - Select Holding - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 20 - - - - Select File - Select File - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 - - - - Holding - Holding - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 - - - - Load Dividends - Load Dividends - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 - - - - Choose or drop a file here - Choose or drop a file here - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - The following file formats are supported: - The following file formats are supported: - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 - - - - Select Dividends - Select Dividends - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 - - - - Select Activities - Select Activities - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 - - - - Back - Back - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 - - - - Allocations - Allocations - - apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 44 - - - - Allocations - Allocations - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 4 - - - - Proportion of Net Worth - Proportion of Net Worth - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 12 - - - - By Platform - By Platform - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 44 - - - - By Currency - By Currency - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 63 - - - - By Asset Class - By Asset Class - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 - - - - By Holding - By Holding - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 - - - - By Sector - By Sector - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 - - - - By Continent - By Continent - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 - - - - By Market - By Market - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Regions - Regions - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 - - - apps/client/src/app/pages/public/public-page.html - 76 - - - - Developed Markets - Developed Markets - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 - - - apps/client/src/app/pages/public/public-page.html - 93 - - - - Emerging Markets - Emerging Markets - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 - - - apps/client/src/app/pages/public/public-page.html - 102 - - - - Other Markets - Other Markets - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 - - - apps/client/src/app/pages/public/public-page.html - 111 - - - - No data available - No data available - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - By Account - By Account - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 - - - - By ETF Provider - By ETF Provider - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 - - - - By Country - By Country - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 - - - - Analysis - Analysis - - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 34 - - - - Dividend - Dividend - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 38 - - - libs/ui/src/lib/i18n.ts - 32 - - - - Deposit - Deposit - - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 - - - - Monthly - Monthly - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 50 - - - - Yearly - Yearly - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 51 - - - - Analysis - Analysis - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 2 - - - - Top - Top - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 - - - - Bottom - Bottom - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 - - - - Portfolio Evolution - Portfolio Evolution - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 - - - - Investment Timeline - Investment Timeline - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 - - - - Current Streak - Current Streak - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 - - - - Longest Streak - Longest Streak - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 - - - - Dividend Timeline - Dividend Timeline - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 - - - - FIRE - FIRE - - apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts - 13 - - - - FIRE - FIRE - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 4 - - - - Calculator - Calculator - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 7 - - - - 4% Rule - 4% Rule - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - Currency Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - Account Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Holdings - Holdings - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 77 - - - apps/client/src/app/components/home-holdings/home-holdings.html - 4 - - - apps/client/src/app/pages/public/public-page.html - 14 - - - libs/ui/src/lib/assistant/assistant.html - 46 - - - - Pricing - Pricing - - apps/client/src/app/pages/pricing/pricing-page-routing.module.ts - 13 - - - - Pricing Plans - Pricing Plans - - apps/client/src/app/pages/pricing/pricing-page.html - 4 - - - - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - - apps/client/src/app/pages/pricing/pricing-page.html - 6 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - - apps/client/src/app/pages/pricing/pricing-page.html - 36 - - - - Unlimited Transactions - Unlimited Transactions - - apps/client/src/app/pages/pricing/pricing-page.html - 43 - - - apps/client/src/app/pages/pricing/pricing-page.html - 126 - - - apps/client/src/app/pages/pricing/pricing-page.html - 187 - - - - Unlimited Accounts - Unlimited Accounts - - apps/client/src/app/pages/pricing/pricing-page.html - 47 - - - apps/client/src/app/pages/pricing/pricing-page.html - 130 - - - apps/client/src/app/pages/pricing/pricing-page.html - 191 - - - - Portfolio Performance - Portfolio Performance - - apps/client/src/app/pages/pricing/pricing-page.html - 51 - - - apps/client/src/app/pages/pricing/pricing-page.html - 134 - - - apps/client/src/app/pages/pricing/pricing-page.html - 195 - - - - Data Import and Export - Data Import and Export - - apps/client/src/app/pages/pricing/pricing-page.html - 71 - - - apps/client/src/app/pages/pricing/pricing-page.html - 138 - - - apps/client/src/app/pages/pricing/pricing-page.html - 215 - - - - Community Support - Community Support - - apps/client/src/app/pages/pricing/pricing-page.html - 88 - - - - Self-hosted, update manually. - Self-hosted, update manually. - - apps/client/src/app/pages/pricing/pricing-page.html - 92 - - - - Free - Free - - apps/client/src/app/pages/pricing/pricing-page.html - 93 - - - apps/client/src/app/pages/pricing/pricing-page.html - 150 - - - - For new investors who are just getting started with trading. - For new investors who are just getting started with trading. - - apps/client/src/app/pages/pricing/pricing-page.html - 120 - - - - Fully managed Ghostfolio cloud offering. - Fully managed Ghostfolio cloud offering. - - apps/client/src/app/pages/pricing/pricing-page.html - 149 - - - apps/client/src/app/pages/pricing/pricing-page.html - 240 - - - - For ambitious investors who need the full picture of their financial assets. - For ambitious investors who need the full picture of their financial assets. - - apps/client/src/app/pages/pricing/pricing-page.html - 180 - - - - Email and Chat Support - Email and Chat Support - - apps/client/src/app/pages/pricing/pricing-page.html - 236 - - - - Renew Plan - Renew Plan - - apps/client/src/app/components/header/header.component.html - 190 - - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 - - - apps/client/src/app/pages/pricing/pricing-page.html - 276 - - - - One-time payment, no auto-renewal. - One-time payment, no auto-renewal. - - apps/client/src/app/pages/pricing/pricing-page.html - 280 - - - - Get Started - Get Started - - apps/client/src/app/pages/pricing/pricing-page.html - 291 - - - - It’s free. - It’s free. - - apps/client/src/app/pages/pricing/pricing-page.html - 294 - - - - Hello, has shared a Portfolio with you! - Hello, has shared a Portfolio with you! - - apps/client/src/app/pages/public/public-page.html - 4 - - - - Currencies - Currencies - - apps/client/src/app/pages/public/public-page.html - 30 - - - - Continents - Continents - - apps/client/src/app/pages/public/public-page.html - 60 - - - - Ghostfolio empowers you to keep track of your wealth. - Ghostfolio empowers you to keep track of your wealth. - - apps/client/src/app/pages/public/public-page.html - 148 - - - - Registration - Registration - - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 - - - - Continue with Internet Identity - Continue with Internet Identity - - apps/client/src/app/pages/register/register-page.html - 41 - - - - Continue with Google - Continue with Google - - apps/client/src/app/pages/register/register-page.html - 51 - - - - Copy to clipboard - Copy to clipboard - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Agree and continue - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 - - - - Personal Finance Tools - Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 - - - - open-source-alternative-to - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Open Source Alternative to - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - Discover Open Source Alternatives for Personal Finance Tools - Discover Open Source Alternatives for Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - The Open Source Alternative to - The Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - - Founded - Founded - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - - Origin - Origin - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - - Region - Region - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - Available in - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ Yes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - Self-Hosting - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - Use anonymously - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - Free Plan - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Notes - Notes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - - Ready to take your investments to the next level? - Ready to take your investments to the next level? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - - Get Started - Get Started - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - - Personal Finance Tools - Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - - Switzerland - Switzerland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 - - - - Global - Global - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 - - - - United States - United States - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 - - - - France - France - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 - - - - Poland - Poland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 - - - - Germany - Germany - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 - - - - Belgium - Belgium - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 - - - - South Africa - South Africa - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 - - - - Austria - Austria - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 - - - - Italy - Italy - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 - - - - Netherlands - Netherlands - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 - - - - Thailand - Thailand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 - - - - New Zealand - New Zealand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 - - - - Czech Republic - Czech Republic - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 - - - - Finland - Finland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 - - - - Canada - Canada - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 - - - - Resources - Resources - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 13 - - - - Guides - Guides - - apps/client/src/app/pages/resources/resources-page.html - 22 - - - - Glossary - Glossary - - apps/client/src/app/pages/resources/resources-page.html - 92 - - - - Membership - Membership - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 - - - - Access - Access - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 - - - - My Ghostfolio - My Ghostfolio - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 - - - - Oops, authentication has failed. - Oops, authentication has failed. - - apps/client/src/app/pages/webauthn/webauthn-page.html - 19 - - - - Try again - Try again - - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 - - - - Go back to Home Page - Go back to Home Page - - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 - - - - Import Activities - Import Activities - - libs/ui/src/lib/activities-table/activities-table.component.html - 9 - + + The following file formats are supported: + The following file formats are supported: - libs/ui/src/lib/activities-table/activities-table.component.html - 370 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 - - Import Dividends - Import Dividends - - libs/ui/src/lib/activities-table/activities-table.component.html - 29 - + + Select Dividends + Select Dividends - libs/ui/src/lib/activities-table/activities-table.component.html - 382 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 - - Export Activities - Export Activities - - libs/ui/src/lib/activities-table/activities-table.component.html - 41 - + + Select Activities + Select Activities - libs/ui/src/lib/activities-table/activities-table.component.html - 395 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 - - Export Drafts as ICS - Export Drafts as ICS + + Back + Back - libs/ui/src/lib/activities-table/activities-table.component.html - 54 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 - libs/ui/src/lib/activities-table/activities-table.component.html - 408 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 - - Draft - Draft + + Allocations + Allocations - libs/ui/src/lib/activities-table/activities-table.component.html - 144 + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts + 13 - - - Clone - Clone - libs/ui/src/lib/activities-table/activities-table.component.html - 435 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 44 - - Export Draft as ICS - Export Draft as ICS + + Allocations + Allocations - libs/ui/src/lib/activities-table/activities-table.component.html - 445 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 - - Do you really want to delete this activity? - Do you really want to delete this activity? + + Proportion of Net Worth + Proportion of Net Worth - libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 - - Find holding... - Find holding... + + By Platform + By Platform - libs/ui/src/lib/assistant/assistant.component.ts - 138 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 - - No entries... - No entries... + + By Currency + By Currency - libs/ui/src/lib/assistant/assistant.html + apps/client/src/app/pages/portfolio/allocations/allocations-page.html 63 - - libs/ui/src/lib/assistant/assistant.html - 84 - - - Asset Profiles - Asset Profiles + + By Asset Class + By Asset Class - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 - - Index - Index + + By Holding + By Holding - libs/ui/src/lib/benchmark/benchmark.component.html - 3 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 - - Last All Time High - Last All Time High + + By Sector + By Sector - libs/ui/src/lib/benchmark/benchmark.component.html - 65 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 - - Change from All Time High - Change from All Time High + + By Continent + By Continent - libs/ui/src/lib/benchmark/benchmark.component.html - 81 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 - - from ATH - from ATH + + By Market + By Market - libs/ui/src/lib/benchmark/benchmark.component.html - 83 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 - - Market data provided by - Market data provided by + + Regions + Regions - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 - - - Savings Rate per Month - Savings Rate per Month - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + apps/client/src/app/pages/public/public-page.html + 87 - - Annual Interest Rate - Annual Interest Rate + + Developed Markets + Rynki Rozwinięte + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 + - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + apps/client/src/app/pages/public/public-page.html + 104 - - Retirement Date - Retirement Date + + Emerging Markets + Rynki Wschodzące - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 231 - - - Projected Total Amount - Projected Total Amount - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 + apps/client/src/app/pages/public/public-page.html + 113 - - Interest - Interest + + Other Markets + Inne Rynki - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 - libs/ui/src/lib/i18n.ts - 34 + apps/client/src/app/pages/public/public-page.html + 122 - - Savings - Savings + + No data available + Brak danych - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - - - Allocation - Allocation - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + apps/client/src/app/pages/public/public-page.html + 132 - - - Show all - Show all - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 - - Account - Account + + By Account + By Account - libs/ui/src/lib/i18n.ts - 4 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 - - Asia-Pacific - Asia-Pacific + + By ETF Provider + By ETF Provider - libs/ui/src/lib/i18n.ts - 5 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 - - Asset Class - Asset Class + + By Country + By Country - libs/ui/src/lib/i18n.ts - 6 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 - - Asset Sub Class - Asset Sub Class + + Analysis + Analysis - libs/ui/src/lib/i18n.ts - 7 + apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts + 13 - - - Core - Core - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 34 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - Switch to Ghostfolio Premium or Ghostfolio Open Source easily + + Dividend + Dividend - libs/ui/src/lib/i18n.ts - 10 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 38 - - - Switch to Ghostfolio Premium easily - Switch to Ghostfolio Premium easily libs/ui/src/lib/i18n.ts - 11 + 35 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - Switch to Ghostfolio Open Source or Ghostfolio Basic easily + + Deposit + Deposit - libs/ui/src/lib/i18n.ts - 12 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 361 - - Emergency Fund - Emergency Fund + + Monthly + Miesięcznie - libs/ui/src/lib/i18n.ts - 13 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 50 - - Grant - Grant + + Yearly + Corocznie - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 51 - - Higher Risk - Higher Risk + + Analysis + Analiza - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 - - This activity already exists. - This activity already exists. + + Top + Top - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 166 - - Japan - Japan + + Bottom + Bottom - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 215 - - Lower Risk - Lower Risk + + Portfolio Evolution + Portfolio Evolution - libs/ui/src/lib/i18n.ts - 18 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 268 - - Month - Month + + Investment Timeline + Investment Timeline - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 296 - - Months - Months + + Current Streak + Current Streak - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 317 - - Other - Other - - libs/ui/src/lib/i18n.ts - 21 - + + Longest Streak + Longest Streak - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 326 - - Preset - Preset + + Dividend Timeline + Dividend Timeline - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 354 - - Retirement Provision - Retirement Provision + + FIRE + FIRE - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts + 13 - - Satellite - Satellite + + FIRE + FIRE - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 4 - - Symbol - Symbol + + Calculator + Kalkulator - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 - - Tag - Tag + + 4% Rule + Zasada 4% - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 - - Year - Year + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray wykorzystuje analizę statyczną do identyfikacji potencjalnych problemów i zagrożeń w Twoim portfelu. - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 - - Years - Years + + Currency Cluster Risks + Currency Cluster Risks - libs/ui/src/lib/i18n.ts - 28 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 - - Buy - Buy + + Account Cluster Risks + Account Cluster Risks - libs/ui/src/lib/i18n.ts - 31 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 - - Fee - Fee + + Holdings + Holdings - libs/ui/src/lib/i18n.ts - 33 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 77 - - - Valuable - Valuable - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/components/home-holdings/home-holdings.html + 4 - - - Liability - Liability - libs/ui/src/lib/i18n.ts - 36 + apps/client/src/app/pages/public/public-page.html + 14 + + + libs/ui/src/lib/assistant/assistant.html + 46 - - Sell - Sell + + Pricing + Cennik - libs/ui/src/lib/i18n.ts - 37 + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 - - Cash - Cash + + Pricing Plans + Plany cenowe - libs/ui/src/lib/i18n.ts - 40 + apps/client/src/app/pages/pricing/pricing-page.html + 4 - - Commodity - Commodity + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + Nasza oficjalna chmurowa usługa Ghostfolio Premium jest najprostszym sposobem by rozpocząć przygodę z Ghostfolio. To najlepsza opcja dla większości osób ze względu na czas, jaki można dzięki niej zaoszczędzić. Uzyskany przychód jest wykorzystywany do pokrycia kosztów infrastruktury hostingowej i finansowania bieżącego rozwoju. - libs/ui/src/lib/i18n.ts - 41 + apps/client/src/app/pages/pricing/pricing-page.html + 6 - - Equity - Equity + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Jeżeli wolisz uruchomić Ghostfolio na własnej infrastrukturze, możesz znaleźć kod źródłowy i dalsze instrukcje na naszym GitHubie. - libs/ui/src/lib/i18n.ts - 42 + apps/client/src/app/pages/pricing/pricing-page.html + 26 - - Fixed Income - Fixed Income + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + Dla inwestorów obeznanych technicznie, którzy wolą uruchomić Ghostfolio na własnej infrastrukturze. - libs/ui/src/lib/i18n.ts - 43 + apps/client/src/app/pages/pricing/pricing-page.html + 38 - - Real Estate - Real Estate + + Unlimited Transactions + Nieograniczona Liczba Transakcji - libs/ui/src/lib/i18n.ts + apps/client/src/app/pages/pricing/pricing-page.html 45 - - - Bond - Bond - libs/ui/src/lib/i18n.ts - 48 + apps/client/src/app/pages/pricing/pricing-page.html + 129 - - - Cryptocurrency - Cryptocurrency - libs/ui/src/lib/i18n.ts - 49 + apps/client/src/app/pages/pricing/pricing-page.html + 191 - - ETF - ETF + + Unlimited Accounts + Nieograniczona Liczba Rachunków - libs/ui/src/lib/i18n.ts - 50 + apps/client/src/app/pages/pricing/pricing-page.html + 49 - - - Mutual Fund - Mutual Fund - libs/ui/src/lib/i18n.ts - 51 + apps/client/src/app/pages/pricing/pricing-page.html + 133 - - - Precious Metal - Precious Metal - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/pricing/pricing-page.html + 195 - - Private Equity - Private Equity + + Portfolio Performance + Efektywność Portfela - libs/ui/src/lib/i18n.ts + apps/client/src/app/pages/pricing/pricing-page.html 53 - - - Stock - Stock - libs/ui/src/lib/i18n.ts - 54 + apps/client/src/app/pages/pricing/pricing-page.html + 137 - - - Africa - Africa - libs/ui/src/lib/i18n.ts - 61 + apps/client/src/app/pages/pricing/pricing-page.html + 199 - - Asia - Asia + + Data Import and Export + Importowanie i Eksportowanie Danych - libs/ui/src/lib/i18n.ts - 62 + apps/client/src/app/pages/pricing/pricing-page.html + 73 + + + apps/client/src/app/pages/pricing/pricing-page.html + 141 + + + apps/client/src/app/pages/pricing/pricing-page.html + 219 - - Europe - Europe + + Community Support + Wsparcie Społeczności - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/pricing/pricing-page.html + 90 - - North America - North America + + Self-hosted, update manually. + Samodzielny hosting, aktualizacja ręczna. - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/pricing/pricing-page.html + 94 - - Oceania - Oceania + + Free + Bezpłatnie - libs/ui/src/lib/i18n.ts - 65 + apps/client/src/app/pages/pricing/pricing-page.html + 95 + + + apps/client/src/app/pages/pricing/pricing-page.html + 153 - - South America - South America + + For new investors who are just getting started with trading. + Dla początkujących inwestorów, którzy dopiero zaczynają swoją przygodę z tradingiem. - libs/ui/src/lib/i18n.ts - 66 + apps/client/src/app/pages/pricing/pricing-page.html + 123 - - Extreme Fear - Extreme Fear + + Fully managed Ghostfolio cloud offering. + W pełni zarządzana oferta Ghostfolio w chmurze. - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/pricing/pricing-page.html + 152 + + + apps/client/src/app/pages/pricing/pricing-page.html + 244 - - Extreme Greed - Extreme Greed + + For ambitious investors who need the full picture of their financial assets. + Dla ambitnych inwestorów, którzy potrzebują pełnego obrazu swoich aktywów finansowych. - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/pages/pricing/pricing-page.html + 184 - - Neutral - Neutral + + Email and Chat Support + Wsparcie przez E-mail i Czat - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/pricing/pricing-page.html + 240 - - Membership - Membership + + Renew Plan + Odnów Plan - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/header/header.component.html + 183 - - - Valid until - Valid until - libs/ui/src/lib/membership-card/membership-card.component.html - 23 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 21 + + + apps/client/src/app/pages/pricing/pricing-page.html + 276 - - Time to add your first activity. - Time to add your first activity. + + One-time payment, no auto-renewal. + Płatność jednorazowa, bez automatycznego odnawiania. - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/pages/pricing/pricing-page.html + 280 - - No data available - No data available + + Get Started + Get Started - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + apps/client/src/app/pages/landing/landing-page.html + 446 + + + It’s free. + It’s free. - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + apps/client/src/app/pages/pricing/pricing-page.html + 301 - - 50-Day Trend - 50-Day Trend + + Hello, has shared a Portfolio with you! + Hello, has shared a Portfolio with you! - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/public/public-page.html + 4 - - 200-Day Trend - 200-Day Trend + + Currencies + Currencies - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + apps/client/src/app/pages/public/public-page.html + 32 - - Cash Balances - Cash Balances + + Continents + Continents - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/pages/public/public-page.html + 68 - - Starting from - Starting from + + Ghostfolio empowers you to keep track of your wealth. + Ghostfolio empowers you to keep track of your wealth. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/public/public-page.html + 159 + + + Registration + Registration - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/register/register-page-routing.module.ts + 13 + + + Continue with Internet Identity + Continue with Internet Identity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/register/register-page.html + 42 + + + Continue with Google + Continue with Google - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/register/register-page.html + 53 + + + Copy to clipboard + Copy to clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 26 + + + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 32 + + + Agree and continue + Agree and continue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 45 + + + Personal Finance Tools + Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 14 + + + open-source-alternative-to + open-source-alternative-to - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Open Source Alternative to + Open Source Alternative to - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + Discover Open Source Alternatives for Personal Finance Tools + Discover Open Source Alternatives for Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore the links below to compare a variety of personal finance tools with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Open Source Alternative to - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to + The Open Source Alternative to - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + Ghostfolio vs comparison table + Ghostfolio vs comparison table - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Founded + Founded - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 72 + + + Origin + Origin - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region + Region - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in + Available in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes + ✅ Yes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously + Use anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan + Free Plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Notes + Notes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? + Ready to take your investments to the next level? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Get Started + Get Started - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Personal Finance Tools + Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 89 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 16 + + + Resources + Resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 13 + + + Guides + Guides - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page.html + 22 + + + Glossary + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + My Ghostfolio + My Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 33 + + + Oops, authentication has failed. + Oops, authentication has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 + + + Try again + Try again - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 + + + Go back to Home Page + Go back to Home Page - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/webauthn/webauthn-page.html + 31 + + + Import Activities + Import Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 370 + + + Import Dividends + Import Dividends - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 382 + + + Export Activities + Export Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 395 + + + Export Drafts as ICS + Export Drafts as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 408 + + + Draft + Draft - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 144 + + + Clone + Clone - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 435 + + + Export Draft as ICS + Export Draft as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.html + 445 + + + Do you really want to delete this activity? + Do you really want to delete this activity? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/activities-table/activities-table.component.ts + 235 + + + Find holding... + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profiles + Asset Profiles - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/assistant/assistant.html + 67 + + + Index + Index - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/benchmark/benchmark.component.html + 3 + + + Last All Time High + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + Change from All Time High + Change from All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/benchmark/benchmark.component.html + 81 + + + from ATH + from ATH - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + Market data provided by + Market data provided by - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month + Savings Rate per Month - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate + Annual Interest Rate - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + Retirement Date + Retirement Date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount + Projected Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 371 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 37 + + + Savings + Savings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 381 + + + Allocation + Allocation - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + + + Show all + Show all - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 + + + Account + Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 4 + + + Asia-Pacific + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class + Asset Class - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 6 + + + Asset Sub Class + Asset Sub Class - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 7 + + + Core + Core - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 10 + + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Switch to Ghostfolio Premium or Ghostfolio Open Source easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 12 + + + Switch to Ghostfolio Premium easily + Switch to Ghostfolio Premium easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 13 + + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Switch to Ghostfolio Open Source or Ghostfolio Basic easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 14 + + + Emergency Fund + Emergency Fund - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 15 + + + Grant + Grant - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 17 + + + Higher Risk + Higher Risk - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 18 - - year - year + + This activity already exists. + This activity already exists. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 19 + + + Japan + Japan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 83 + + + Lower Risk + Lower Risk - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 20 + + + Month + Month - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 21 + + + Months + Months - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 22 + + + Other + Other - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 403 + + + Preset + Preset - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 24 + + + Retirement Provision + Retirement Provision - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 25 + + + Satellite + Satellite - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 26 + + + Symbol + Symbol - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 27 + + + Tag + Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 28 + + + Year + Year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 29 + + + Years + Years - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 30 + + + Buy + Buy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 34 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 36 + + + Valuable + Valuable - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 38 + + + Liability + Liability - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 39 + + + Sell + Sell - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 40 + + + Cash + Cash - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 43 + + + Commodity + Commodity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 44 + + + Equity + Equity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 45 + + + Fixed Income + Fixed Income - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 46 + + + Real Estate + Real Estate - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 48 + + + Bond + Bond - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 51 + + + Cryptocurrency + Cryptocurrency - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 52 + + + ETF + ETF - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 53 + + + Mutual Fund + Mutual Fund - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 54 + + + Precious Metal + Precious Metal - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 55 + + + Private Equity + Private Equity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 56 + + + Stock + Stock - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 57 + + + Africa + Afryka - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 64 + + + Asia + Azja - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 65 + + + Europe + Europa - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 66 + + + North America + Ameryka Północna - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 67 + + + Oceania + Oceania - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 68 + + + South America + Ameryka Południowa - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 69 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 95 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 98 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + + + Valid until + Valid until - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/membership-card/membership-card.component.html + 23 + + + Time to add your first activity. + Time to add your first activity. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 + + + No data available + Brak danych - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 405 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 418 + + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Do you really want to delete this account balance? + Czy na pewno chcesz usunąć saldo tego konta? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + is an invalid currency! + is an invalid currency! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + If a translation is missing, kindly support us in extending it here. + Jeżeli brakuje jakiegoś tłumaczenia, uprzejmie prosimy o wsparcie w jego uzupełnieniu tutaj. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + The current market price is + The current market price is - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + Test + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + Date Range + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 93 + + + Permission + Permission - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + Restricted view + Restricted view - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + Oops! Could not grant access. + Ups! Nie udało się przyznać dostępu. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + Private + Private - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Job Queue + Job Queue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + Market data is delayed for + Market data is delayed for - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + Investment + Investment - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + Absolute Asset Performance + Absolute Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + Asset Performance + Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + Absolute Currency Performance + Absolute Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + Currency Performance + Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + Absolute Net Performance + Absolute Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Net Performance + Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + Week to date + Week to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + Month to date + Month to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + Year to date + Year to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + View + View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + Oops! A data provider is experiencing the hiccups. + Ups! Dostawca danych zmaga się teraz z drobnymi przeszkodami. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + Reset Filters + Resetuj Filtry - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 155 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + years + years - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Asset Classes + Asset Classes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 138 + + + Apply Filters + Zastosuj Filtry - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 165 + + + Data Gathering + Gromadzenie Danych - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + General + General - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + Cloud + Cloud - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + self-hosting + self-hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + FAQ + FAQ - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Ups! Wygląda na to, że wykonujesz zbyt wiele zapytań. Proszę, zwolnij trochę. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + My Account + My Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Active + Active - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Closed + Closed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + Activity + Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + Dividend Yield + Dochód z Dywidendy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + Execute Job + Execute Job - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + Priority + Priorytet - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - is an invalid currency! - is an invalid currency! + + This action is not allowed. + To działanie jest niedozwolone. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Liquidity + Płynność środków finansowych - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + libs/ui/src/lib/i18n.ts + 47 - - The current market price is - The current market price is + + Change with currency effect + Change with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - Test - Test + + Performance with currency effect + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Date Range - Date Range + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - libs/ui/src/lib/assistant/assistant.html - 93 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Permission - Permission + + Buy and sell + Buy and sell - apps/client/src/app/components/access-table/access-table.component.html - 17 + libs/ui/src/lib/i18n.ts + 8 + + + Delete Activities + Delete Activities - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 - - Restricted view - Restricted view + + Internationalization + Internacjonalizacja - apps/client/src/app/components/access-table/access-table.component.html - 25 + apps/client/src/app/app-routing.module.ts + 79 + + + Do you really want to close your Ghostfolio account? + Czy na pewno chcesz zamknąć swoje konto Ghostfolio? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Oops! Could not grant access. - Oops! Could not grant access. + + Danger Zone + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Private - Private + + Close Account + Close Account - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Job Queue - Job Queue + + By ETF Holding + By ETF Holding - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Market data is delayed for - Market data is delayed for + + Join now or check out the example account + Dołącz teraz lub sprawdź przykładowe konto - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Investment - Investment + + Oops! There was an error setting up biometric authentication. + Ups! Wystąpił błąd podczas konfigurowania uwierzytelniania biometrycznego. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 + + + Show more + Pokaż więcej - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 - - Absolute Asset Performance - Absolute Asset Performance + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Asset Performance - Asset Performance + + Delete Profiles + Usuń Profile - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 - - Absolute Currency Performance - Absolute Currency Performance + + Do you really want to delete these profiles? + Czy na pewno chcesz usunąć te profile? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Currency Performance - Currency Performance + + Oops! Could not delete profiles. + Ups! Nie udało się usunąć profili. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Absolute Net Performance - Absolute Net Performance + + Table + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Net Performance - Net Performance + + Chart + Chart - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Week to date - Week to date + + Would you like to refine your personal investment strategy? + Chcesz udoskonalić swoją osobistą strategię inwestycyjną? - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/public/public-page.html + 155 - - WTD - WTD + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Month to date - Month to date + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - MTD - MTD + + Budgeting + Budgeting - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - Year to date - Year to date + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - View - View + + Family Office + Family Office - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Investor + Investor - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Personal Finance + Personal Finance - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Reset Filters - Reset Filters + + Privacy + Privacy - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year - year + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - years - years + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Asset Classes - Asset Classes + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Apply Filters - Apply Filters + + Wealth + Wealth - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Data Gathering - Data Gathering + + Wealth Management + Wealth Management - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - General - General + + Australia + Australia - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 72 - - Cloud - Cloud + + Austria + Austria - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 73 + + + Belgium + Belgium - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 74 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 75 + + + Canada + Canada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - self-hosting - self-hosting + + Czech Republic + Czech Republic - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 77 - - FAQ - FAQ + + Finland + Finland - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 78 + + + France + France - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Germany + Germany - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 80 - - My Account - My Account + + India + India - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 81 - - Active - Active + + Italy + Italy - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 82 - - Closed - Closed + + Netherlands + Netherlands - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 84 - - Activity - Activity + + New Zealand + New Zealand - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 85 - - Dividend Yield - Dividend Yield + + Poland + Poland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 86 - - Execute Job - Execute Job + + Romania + Romania - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 87 - - Priority - Priority + + South Africa + South Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 88 - - This action is not allowed. - This action is not allowed. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 90 - - Liquidity - Liquidity + + United States + United States libs/ui/src/lib/i18n.ts - 44 + 91 - - Change with currency effect - Change with currency effect + + Error + Error - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Performance with currency effect - Performance with currency effect + + Deactivate + Deactivate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 67 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Activate + Activate - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 69 - - Buy and sell - Buy and sell + + Inactive + Inactive + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 + + + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Delete Activities + + Close + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalization + + Yes + Yes - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 3975afac0..f8d31960f 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1,12 +1,12 @@ - + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo. apps/client/src/app/app.component.html - 182 + 199 @@ -14,7 +14,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 3 + 4 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -26,7 +26,7 @@ Beneficiário (a) apps/client/src/app/components/access-table/access-table.component.html - 10 + 11 @@ -34,7 +34,7 @@ Tipo apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + 31 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -42,7 +42,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + 15 libs/ui/src/lib/activities-table/activities-table.component.html @@ -54,7 +54,7 @@ Detalhes apps/client/src/app/components/access-table/access-table.component.html - 32 + 33 @@ -62,7 +62,7 @@ Revogar apps/client/src/app/components/access-table/access-table.component.html - 59 + 62 @@ -70,7 +70,7 @@ Pretende realmente revogar este acesso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 56 @@ -82,7 +82,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + 86 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -102,11 +102,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + 119 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + 152 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -114,15 +114,15 @@ apps/client/src/app/components/admin-users/admin-users.html - 134 + 135 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + 225 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -134,15 +134,15 @@ Nome apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 + 43 apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 + 228 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -150,7 +150,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + 15 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -158,7 +158,7 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + 15 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -166,7 +166,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + 138 libs/ui/src/lib/activities-table/activities-table.component.html @@ -176,13 +176,17 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 28 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + Total Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + 55 @@ -190,15 +194,15 @@ Moeda apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + 65 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + 132 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + 235 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -206,7 +210,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + 144 libs/ui/src/lib/activities-table/activities-table.component.html @@ -222,7 +226,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + 136 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -234,43 +238,43 @@ Valor apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + 171 apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + 206 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + 53 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + 207 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + 210 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + 274 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + 277 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 280 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + 283 libs/ui/src/lib/account-balances/account-balances.component.html @@ -288,25 +292,29 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 74 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + Edit Editar apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 278 apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + 215 apps/client/src/app/components/admin-overview/admin-overview.html - 80 + 78 apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + 92 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -322,27 +330,27 @@ Eliminar apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + 288 apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 + 236 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 64 apps/client/src/app/components/admin-overview/admin-overview.html - 90 + 88 apps/client/src/app/components/admin-overview/admin-overview.html - 199 + 205 apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + 102 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -362,7 +370,7 @@ Pretende realmente eliminar esta conta? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + 110 @@ -370,23 +378,23 @@ Símbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 + 44 apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + 46 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + 117 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + 36 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + 305 @@ -394,19 +402,19 @@ Fonte de dados apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + 53 apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + 77 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 127 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + 154 @@ -414,7 +422,7 @@ Tentativas apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + 81 @@ -422,7 +430,7 @@ Criado apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + 90 @@ -430,7 +438,7 @@ Terminado apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + 99 @@ -438,7 +446,7 @@ Estado apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + 108 @@ -446,20 +454,20 @@ Eliminar Tarefas apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + 149 Asset Profiles - Perfil de Ativos + Perfil de Ativos libs/ui/src/lib/assistant/assistant.html 67 - - Historical Market Data - Histórico de Dados de Mercado + + Historical Market Data + Histórico de Dados de Mercado apps/client/src/app/components/admin-jobs/admin-jobs.html 37 @@ -470,7 +478,7 @@ Visualizar dados apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + 164 @@ -478,7 +486,7 @@ Ver Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + 171 @@ -486,7 +494,7 @@ Apagar Tarefa apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + 177 @@ -506,7 +514,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + 160 libs/ui/src/lib/account-balances/account-balances.component.html @@ -526,7 +534,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + 114 @@ -538,19 +546,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + 378 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + 43 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + 42 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 + 25 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -562,11 +570,11 @@ apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + 65 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + 427 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -582,19 +590,19 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + 385 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + 50 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + 49 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + 32 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -606,7 +614,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + 434 @@ -614,7 +622,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + 328 @@ -622,23 +630,23 @@ Classe do Ativo apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + 86 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + 161 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + 245 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + 232 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + 354 @@ -646,23 +654,23 @@ Subclasse do ativo apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + 95 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + 170 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + 258 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + 241 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + 370 @@ -670,15 +678,15 @@ Primeira Atividade apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + 143 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 213 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -690,7 +698,7 @@ Número de Atividades apps/client/src/app/components/admin-overview/admin-overview.html - 23 + 19 @@ -698,11 +706,11 @@ Dados Históricos apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + 122 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + 84 @@ -710,7 +718,7 @@ Contagem de Países apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + 140 @@ -718,7 +726,7 @@ Contagem de Setores apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + 131 @@ -726,7 +734,7 @@ Atualizar dados mais recentes apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + 177 @@ -734,7 +742,7 @@ Recolher Todos os Dados apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + 180 @@ -742,7 +750,7 @@ Recolher Dados de Perfíl apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + 183 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -754,7 +762,7 @@ Por favor, adicione uma moeda: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + 125 @@ -762,7 +770,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + 152 @@ -770,7 +778,7 @@ Deseja realmente excluir esta moeda? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + 165 @@ -778,7 +786,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + 202 @@ -786,7 +794,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + 222 @@ -802,7 +810,7 @@ por Utilizador apps/client/src/app/components/admin-overview/admin-overview.html - 32 + 28 @@ -810,7 +818,7 @@ Taxas de Câmbio apps/client/src/app/components/admin-overview/admin-overview.html - 37 + 34 @@ -826,7 +834,7 @@ Mensagem de Sistema apps/client/src/app/components/admin-overview/admin-overview.html - 145 + 148 @@ -834,7 +842,7 @@ Definir Mensagem apps/client/src/app/components/admin-overview/admin-overview.html - 165 + 170 @@ -842,7 +850,7 @@ Modo Somente Leitura apps/client/src/app/components/admin-overview/admin-overview.html - 123 + 124 @@ -850,7 +858,7 @@ Cupões apps/client/src/app/components/admin-overview/admin-overview.html - 173 + 178 @@ -858,7 +866,7 @@ Adicionar apps/client/src/app/components/admin-overview/admin-overview.html - 231 + 238 libs/ui/src/lib/account-balances/account-balances.component.html @@ -870,7 +878,7 @@ Manutenção apps/client/src/app/components/admin-overview/admin-overview.html - 238 + 246 @@ -878,7 +886,7 @@ Limpar Cache apps/client/src/app/components/admin-overview/admin-overview.html - 242 + 250 @@ -886,7 +894,7 @@ Deseja realmente excluir este utilizador? apps/client/src/app/components/admin-users/admin-users.component.ts - 113 + 125 @@ -894,7 +902,7 @@ Utilizador apps/client/src/app/components/header/header.component.html - 230 + 221 @@ -902,7 +910,7 @@ Registo apps/client/src/app/components/admin-users/admin-users.html - 96 + 97 @@ -910,11 +918,11 @@ Contas apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 + 65 apps/client/src/app/components/admin-users/admin-users.html - 113 + 114 apps/client/src/app/components/header/header.component.html @@ -922,11 +930,11 @@ apps/client/src/app/components/header/header.component.html - 262 + 255 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -942,15 +950,15 @@ Envolvimento por Dia apps/client/src/app/components/admin-users/admin-users.html - 158 + 157 - + Last Request - Último Pedido + Último Pedido apps/client/src/app/components/admin-users/admin-users.html - 183 + 181 @@ -962,7 +970,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 + 91 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -974,7 +982,7 @@ Comparar com... apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 + 18 @@ -988,6 +996,10 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts 41 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + Benchmark @@ -1014,7 +1026,7 @@ apps/client/src/app/components/header/header.component.html - 244 + 237 @@ -1026,7 +1038,7 @@ apps/client/src/app/components/header/header.component.html - 254 + 247 @@ -1034,11 +1046,11 @@ Controlo Administrativo apps/client/src/app/components/header/header.component.html - 67 + 68 apps/client/src/app/components/header/header.component.html - 278 + 271 @@ -1046,15 +1058,15 @@ Recursos apps/client/src/app/app.component.html - 60 + 61 apps/client/src/app/components/header/header.component.html - 80 + 82 apps/client/src/app/components/header/header.component.html - 289 + 283 apps/client/src/app/pages/resources/resources-page.html @@ -1066,7 +1078,7 @@ Preços apps/client/src/app/app.component.html - 86 + 94 apps/client/src/app/components/header/header.component.html @@ -1074,247 +1086,39 @@ apps/client/src/app/components/header/header.component.html - 301 + 294 apps/client/src/app/components/header/header.component.html - 370 + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + About + Sobre - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/header/header.component.html + 351 + + + Me + Eu - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - - About - Sobre - - apps/client/src/app/app.component.html - 66 - - - apps/client/src/app/components/header/header.component.html - 111 - - - apps/client/src/app/components/header/header.component.html - 357 - - - - Me - Eu - - apps/client/src/app/components/header/header.component.html - 211 + apps/client/src/app/components/header/header.component.html + 203 @@ -1322,7 +1126,7 @@ O meu Ghostfolio apps/client/src/app/components/header/header.component.html - 269 + 262 @@ -1330,7 +1134,7 @@ Sobre o Ghostfolio apps/client/src/app/components/header/header.component.html - 309 + 303 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1342,11 +1146,11 @@ Funcionalidades apps/client/src/app/app.component.html - 73 + 76 apps/client/src/app/components/header/header.component.html - 344 + 338 apps/client/src/app/pages/features/features-page.html @@ -1362,7 +1166,7 @@ apps/client/src/app/components/header/header.component.html - 386 + 380 apps/client/src/app/components/home-market/home-market.html @@ -1378,7 +1182,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.html - 399 + 394 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1390,7 +1194,7 @@ Começar apps/client/src/app/components/header/header.component.html - 411 + 404 @@ -1402,7 +1206,7 @@ apps/client/src/app/components/header/header.component.ts - 229 + 231 @@ -1410,7 +1214,11 @@ Oops! Token de Segurança Incorreto. apps/client/src/app/components/header/header.component.ts - 243 + 246 + + + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 @@ -1418,7 +1226,7 @@ Gerir Atividades apps/client/src/app/components/home-holdings/home-holdings.html - 32 + 61 @@ -1426,11 +1234,11 @@ Medo apps/client/src/app/components/home-market/home-market.component.ts - 25 + 27 libs/ui/src/lib/i18n.ts - 71 + 96 @@ -1438,11 +1246,11 @@ Ganância apps/client/src/app/components/home-market/home-market.component.ts - 26 + 28 libs/ui/src/lib/i18n.ts - 72 + 97 @@ -1450,31 +1258,7 @@ Últimos Dias apps/client/src/app/components/home-market/home-market.html - 6 - - - - This feature requires a subscription. - Esta funcionalidade requer uma subscrição. - - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 - - - apps/client/src/app/core/http-response.interceptor.ts - 69 - - - - Upgrade Plan - Atualizar Plano - - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 - - - apps/client/src/app/core/http-response.interceptor.ts - 72 + 7 @@ -1490,7 +1274,7 @@ Depósito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 + 361 @@ -1498,7 +1282,7 @@ Valor Total apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 + 141 @@ -1506,7 +1290,7 @@ Taxa de Poupança apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 + 213 @@ -1516,6 +1300,10 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 10 @@ -1530,15 +1318,19 @@ apps/client/src/app/pages/landing/landing-page.html - 423 + 47 + + + apps/client/src/app/pages/landing/landing-page.html + 450 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 + 97 apps/client/src/app/pages/register/register-page.html - 29 + 30 apps/client/src/app/pages/webauthn/webauthn-page.html @@ -1598,7 +1390,7 @@ Investimento apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 168 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1626,7 +1418,7 @@ Desempenho Líquido Absoluto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 + 126 @@ -1634,7 +1426,7 @@ Desempenho Líquido apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 + 141 @@ -1642,7 +1434,7 @@ Ativos Totais apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 + 167 @@ -1650,7 +1442,7 @@ Bens de valor apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 + 180 @@ -1658,7 +1450,7 @@ Fundo de Emergência apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 + 192 apps/client/src/app/pages/features/features-page.html @@ -1674,7 +1466,7 @@ Poder de Compra apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 + 252 @@ -1682,7 +1474,7 @@ Excluído da Análise apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 + 264 @@ -1690,7 +1482,7 @@ Valor Líquido apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 + 297 @@ -1698,7 +1490,7 @@ Desempenho Anual apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 + 309 @@ -1706,11 +1498,11 @@ Dividendo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 + 181 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 + 343 apps/client/src/app/pages/features/features-page.html @@ -1718,11 +1510,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 + 271 @@ -1730,7 +1522,7 @@ Por favor, insira o valor do seu fundo de emergência: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 + 58 @@ -1738,7 +1530,7 @@ Alterar apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 + 65 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1750,7 +1542,7 @@ Preço Médio por Unidade apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 + 103 @@ -1758,7 +1550,7 @@ Preço Mínimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 + 130 @@ -1766,7 +1558,7 @@ Preço Máximo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 + 146 @@ -1774,11 +1566,11 @@ Quantidade apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 + 156 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 + 188 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1790,11 +1582,11 @@ Setor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + 187 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + 258 @@ -1802,7 +1594,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + 198 apps/client/src/app/components/admin-users/admin-users.html @@ -1810,7 +1602,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + 268 @@ -1818,19 +1610,19 @@ Setores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 204 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + 329 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 274 apps/client/src/app/pages/public/public-page.html - 45 + 50 @@ -1838,15 +1630,15 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 214 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + 340 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + 286 @@ -1858,11 +1650,15 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 + 393 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 + 383 libs/ui/src/lib/assistant/assistant.html @@ -1874,7 +1670,7 @@ Dados do Relatório com Problema apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 + 448 @@ -1884,6 +1680,10 @@ libs/ui/src/lib/holdings-table/holdings-table.component.html 98 + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + Show all @@ -1958,7 +1758,7 @@ Esta funcionalidade está atualmente indisponível. apps/client/src/app/core/http-response.interceptor.ts - 60 + 53 @@ -1966,11 +1766,11 @@ Por favor tente novamente mais tarde. apps/client/src/app/core/http-response.interceptor.ts - 62 + 55 apps/client/src/app/core/http-response.interceptor.ts - 91 + 80 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1982,7 +1782,7 @@ Oops! Ocorreu um erro. apps/client/src/app/core/http-response.interceptor.ts - 89 + 78 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1994,7 +1794,7 @@ OK apps/client/src/app/core/http-response.interceptor.ts - 92 + 81 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2022,7 +1822,7 @@ Changelog apps/client/src/app/app.component.html - 71 + 74 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -2034,7 +1834,7 @@ Licença apps/client/src/app/app.component.html - 80 + 85 apps/client/src/app/pages/about/license/license-page.html @@ -2058,7 +1858,7 @@ Política de Privacidade apps/client/src/app/app.component.html - 90 + 100 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -2078,7 +1878,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 + 38 @@ -2086,7 +1886,7 @@ Por favor, insira o seu código de cupão: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 + 118 @@ -2094,7 +1894,7 @@ Não foi possível resgatar o código de cupão apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 + 128 @@ -2102,7 +1902,7 @@ Código de cupão foi resgatado apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + 140 @@ -2110,7 +1910,7 @@ Atualizar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 + 141 @@ -2118,7 +1918,7 @@ Deseja realmente remover este método de início de sessão? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 + 252 @@ -2126,7 +1926,7 @@ Conta apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 + 85 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2146,11 +1946,11 @@ por ano apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 33 apps/client/src/app/pages/pricing/pricing-page.html - 254 + 257 @@ -2158,7 +1958,7 @@ Experimentar Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 + 40 @@ -2166,7 +1966,7 @@ Resgatar Cupão apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + 54 @@ -2190,7 +1990,7 @@ Língua apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 + 48 @@ -2210,7 +2010,7 @@ Localidade apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 + 123 @@ -2218,7 +2018,7 @@ Formato de números e datas apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + 125 @@ -2226,11 +2026,11 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 + 173 apps/client/src/app/pages/features/features-page.html - 190 + 191 @@ -2238,7 +2038,7 @@ Aparência apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 + 148 @@ -2246,7 +2046,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 + 162 @@ -2254,7 +2054,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 + 163 @@ -2262,15 +2062,15 @@ Escuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 + 164 Sign in with fingerprint - Iniciar sessão com impressão digital + Iniciar sessão com impressão digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 + 191 @@ -2278,7 +2078,7 @@ Funcionalidades Experimentais apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 + 207 @@ -2290,7 +2090,7 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 + 224 @@ -2346,7 +2146,7 @@ Dinheiro apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 + 226 @@ -2378,7 +2178,7 @@ Blog apps/client/src/app/app.component.html - 68 + 70 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -2386,15 +2186,15 @@ apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + 184 apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html @@ -2402,7 +2202,7 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + 196 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html @@ -2426,7 +2226,7 @@ apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + 253 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -2542,7 +2342,7 @@ Atualizar atividade apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 + 10 @@ -2550,7 +2350,7 @@ Adicionar atividade apps/client/src/app/components/home-overview/home-overview.html - 56 + 52 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2562,7 +2362,7 @@ Venda libs/ui/src/lib/i18n.ts - 37 + 40 @@ -2570,11 +2370,11 @@ Nome, símbolo or ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 26 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + 124 @@ -2582,11 +2382,11 @@ Preço por Unidade apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 + 286 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2598,11 +2398,11 @@ Comissão apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 + 306 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 330 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2614,7 +2414,7 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + 365 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -2622,7 +2422,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + 339 @@ -2646,7 +2446,7 @@ Os seguintes formatos de ficheiro são suportados: apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 + 90 @@ -2654,11 +2454,11 @@ Anterior apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 + 144 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 + 178 @@ -2694,7 +2494,7 @@ Por Conta apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 + 286 @@ -2710,7 +2510,7 @@ Por Classe de Ativo apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 + 85 @@ -2718,7 +2518,7 @@ Por Posse apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 + 107 @@ -2726,7 +2526,7 @@ Por Setor apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 + 130 @@ -2734,7 +2534,7 @@ Por Continente apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 + 153 @@ -2742,7 +2542,7 @@ Por País apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 + 264 @@ -2750,11 +2550,11 @@ Regiões apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 + 198 apps/client/src/app/pages/public/public-page.html - 76 + 87 @@ -2762,11 +2562,11 @@ Mercados Desenvoldidos apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 + 222 apps/client/src/app/pages/public/public-page.html - 93 + 104 @@ -2774,11 +2574,11 @@ Mercados Emergentes apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 + 231 apps/client/src/app/pages/public/public-page.html - 102 + 113 @@ -2786,11 +2586,11 @@ Outros Mercados apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 + 240 apps/client/src/app/pages/public/public-page.html - 111 + 122 @@ -2826,7 +2626,7 @@ Topo apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 + 166 @@ -2834,7 +2634,7 @@ Fundo apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 + 215 @@ -2842,7 +2642,7 @@ Evolução do Portefólio apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 + 268 @@ -2850,7 +2650,7 @@ Cronograma de Investimento apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 + 296 @@ -2882,7 +2682,7 @@ Regra dos 4% apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 + 40 @@ -2946,7 +2746,7 @@ Moedas apps/client/src/app/pages/public/public-page.html - 30 + 32 @@ -2954,7 +2754,7 @@ Continentes apps/client/src/app/pages/public/public-page.html - 60 + 68 @@ -2962,7 +2762,7 @@ O Ghostfolio permite-lhe estar a par e gerir a sua riqueza. apps/client/src/app/pages/public/public-page.html - 148 + 159 @@ -2970,11 +2770,11 @@ Começar apps/client/src/app/pages/features/features-page.html - 300 + 303 apps/client/src/app/pages/public/public-page.html - 153 + 164 @@ -2990,11 +2790,11 @@ Criar Conta apps/client/src/app/app.component.html - 18 + 13 apps/client/src/app/pages/register/register-page.html - 26 + 27 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -3006,7 +2806,7 @@ Continuar com Internet Identity apps/client/src/app/pages/register/register-page.html - 41 + 42 @@ -3014,7 +2814,7 @@ Continuar com Google apps/client/src/app/pages/register/register-page.html - 51 + 53 @@ -3086,7 +2886,7 @@ Importar Atividades apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 + 45 @@ -3134,7 +2934,7 @@ Deseja realmente eliminar esta atividade? libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + 235 @@ -3182,11 +2982,11 @@ Juros libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + 371 libs/ui/src/lib/i18n.ts - 34 + 37 @@ -3194,7 +2994,7 @@ Poupanças libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 381 @@ -3218,7 +3018,7 @@ Fundo de Emergência libs/ui/src/lib/i18n.ts - 13 + 15 @@ -3226,11 +3026,11 @@ Outro libs/ui/src/lib/i18n.ts - 21 + 23 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + 403 @@ -3238,7 +3038,7 @@ Símbolo libs/ui/src/lib/i18n.ts - 25 + 27 @@ -3246,7 +3046,7 @@ Marcador libs/ui/src/lib/i18n.ts - 26 + 28 @@ -3254,7 +3054,7 @@ Dinheiro libs/ui/src/lib/i18n.ts - 40 + 43 @@ -3262,7 +3062,7 @@ Matéria-prima libs/ui/src/lib/i18n.ts - 41 + 44 @@ -3270,7 +3070,7 @@ Ações libs/ui/src/lib/i18n.ts - 42 + 45 @@ -3278,7 +3078,7 @@ Rendimento Fixo libs/ui/src/lib/i18n.ts - 43 + 46 @@ -3286,7 +3086,7 @@ Imobiliário libs/ui/src/lib/i18n.ts - 45 + 48 @@ -3294,7 +3094,7 @@ Obrigação libs/ui/src/lib/i18n.ts - 48 + 51 @@ -3302,7 +3102,7 @@ Criptomoedas libs/ui/src/lib/i18n.ts - 49 + 52 @@ -3310,7 +3110,7 @@ ETF libs/ui/src/lib/i18n.ts - 50 + 53 @@ -3318,7 +3118,7 @@ Fundo de Investimento libs/ui/src/lib/i18n.ts - 51 + 54 @@ -3326,7 +3126,7 @@ Metal Precioso libs/ui/src/lib/i18n.ts - 52 + 55 @@ -3334,7 +3134,7 @@ Private Equity libs/ui/src/lib/i18n.ts - 53 + 56 @@ -3342,7 +3142,7 @@ Ação libs/ui/src/lib/i18n.ts - 54 + 57 @@ -3350,7 +3150,7 @@ África libs/ui/src/lib/i18n.ts - 61 + 64 @@ -3358,7 +3158,7 @@ Ásia libs/ui/src/lib/i18n.ts - 62 + 65 @@ -3366,7 +3166,7 @@ Europa libs/ui/src/lib/i18n.ts - 63 + 66 @@ -3374,7 +3174,7 @@ América do Norte libs/ui/src/lib/i18n.ts - 64 + 67 @@ -3382,7 +3182,7 @@ Oceânia libs/ui/src/lib/i18n.ts - 65 + 68 @@ -3390,7 +3190,7 @@ América do Sul libs/ui/src/lib/i18n.ts - 66 + 69 @@ -3406,11 +3206,11 @@ Sem dados disponíveis libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + 405 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + 418 @@ -3418,7 +3218,7 @@ Nº de Atividades apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + 113 @@ -3434,7 +3234,7 @@ Mapeamento de Símbolo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + 292 @@ -3450,43 +3250,47 @@ Comunidade apps/client/src/app/app.component.html - 105 + 118 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 77 apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + 83 apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 88 apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + 92 apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + 96 apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + 100 apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + 105 apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + 110 + + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 apps/client/src/app/pages/features/features-page.html - 256 + 259 @@ -3518,7 +3322,7 @@ A validar dados... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 + 234 @@ -3526,15 +3330,15 @@ Importar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 + 110 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 + 153 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 + 186 @@ -3546,7 +3350,7 @@ libs/ui/src/lib/i18n.ts - 32 + 35 @@ -3554,7 +3358,7 @@ Cronograma de Dividendos apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 + 354 @@ -3570,7 +3374,7 @@ Detenção apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 + 32 @@ -3578,7 +3382,7 @@ Carregar Dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 + 68 @@ -3610,7 +3414,7 @@ Núcleo libs/ui/src/lib/i18n.ts - 9 + 10 @@ -3618,7 +3422,7 @@ Conceder libs/ui/src/lib/i18n.ts - 14 + 17 @@ -3626,7 +3430,7 @@ Risco mais Elevado libs/ui/src/lib/i18n.ts - 15 + 18 @@ -3634,7 +3438,7 @@ Risco menos Elevado libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3642,7 +3446,7 @@ Provisão de Reforma libs/ui/src/lib/i18n.ts - 23 + 25 @@ -3650,12 +3454,12 @@ Satélite libs/ui/src/lib/i18n.ts - 24 + 26 Protection for sensitive information like absolute performances and quantity values - Proteção para informações sensíveis, como desempenhos absolutos e valores quantitativos + Proteção para informações sensíveis, como desempenhos absolutos e valores quantitativos apps/client/src/app/components/user-account-settings/user-account-settings.html 8 @@ -3663,18 +3467,18 @@ Distraction-free experience for turbulent times - Experiência sem distrações para tempos turbulentos + Experiência sem distrações para tempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + 174 Sneak peek at upcoming functionality - Acesso antecipado a funcionalidades futuras + Acesso antecipado a funcionalidades futuras apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 + 208 @@ -3694,11 +3498,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 55 + 57 apps/client/src/app/pages/pricing/pricing-page.html - 199 + 203 @@ -3710,11 +3514,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 63 + 65 apps/client/src/app/pages/pricing/pricing-page.html - 207 + 211 @@ -3726,11 +3530,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 67 + 69 apps/client/src/app/pages/pricing/pricing-page.html - 211 + 215 @@ -3742,11 +3546,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 83 + 85 apps/client/src/app/pages/pricing/pricing-page.html - 231 + 235 @@ -3762,7 +3566,7 @@ Atualizar Plano apps/client/src/app/components/header/header.component.html - 182 + 178 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3770,11 +3574,11 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + 16 apps/client/src/app/pages/pricing/pricing-page.html - 268 + 271 @@ -3782,7 +3586,7 @@ Para investidores experientes que preferem correr o Ghostfolio na sua própria infraestrutura. apps/client/src/app/pages/pricing/pricing-page.html - 36 + 38 @@ -3790,15 +3594,15 @@ Transações Ilimitadas apps/client/src/app/pages/pricing/pricing-page.html - 43 + 45 apps/client/src/app/pages/pricing/pricing-page.html - 126 + 129 apps/client/src/app/pages/pricing/pricing-page.html - 187 + 191 @@ -3806,15 +3610,15 @@ Contas Ilimitadas apps/client/src/app/pages/pricing/pricing-page.html - 47 + 49 apps/client/src/app/pages/pricing/pricing-page.html - 130 + 133 apps/client/src/app/pages/pricing/pricing-page.html - 191 + 195 @@ -3822,15 +3626,15 @@ Desempenho do Portefólio apps/client/src/app/pages/pricing/pricing-page.html - 51 + 53 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 137 apps/client/src/app/pages/pricing/pricing-page.html - 195 + 199 @@ -3838,7 +3642,7 @@ Hospedado localmente, atualização manual. apps/client/src/app/pages/pricing/pricing-page.html - 92 + 94 @@ -3846,11 +3650,11 @@ Grátis apps/client/src/app/pages/pricing/pricing-page.html - 93 + 95 apps/client/src/app/pages/pricing/pricing-page.html - 150 + 153 @@ -3858,7 +3662,7 @@ Para novos investidores que estão a começar a investir agora. apps/client/src/app/pages/pricing/pricing-page.html - 120 + 123 @@ -3866,11 +3670,11 @@ Ghostfolio hospedado na nuvem, totalmente gerido. apps/client/src/app/pages/pricing/pricing-page.html - 149 + 152 apps/client/src/app/pages/pricing/pricing-page.html - 240 + 244 @@ -3878,7 +3682,7 @@ Para investidores ambiciosos que precisam de ter uma visão completa de seus ativos financeiros. apps/client/src/app/pages/pricing/pricing-page.html - 180 + 184 @@ -3889,12 +3693,12 @@ 280 - + Get Started Começar - apps/client/src/app/pages/pricing/pricing-page.html - 291 + apps/client/src/app/pages/landing/landing-page.html + 446 @@ -3902,7 +3706,7 @@ É gratuito. apps/client/src/app/pages/pricing/pricing-page.html - 294 + 301 @@ -3910,7 +3714,7 @@ Taxas apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 + 203 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3918,7 +3722,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 + 176 @@ -3930,15 +3734,15 @@ apps/client/src/app/pages/features/features-page.html - 160 + 161 apps/client/src/app/pages/pricing/pricing-page.html - 59 + 61 apps/client/src/app/pages/pricing/pricing-page.html - 203 + 207 @@ -3954,15 +3758,15 @@ Importação e Exportação de Dados apps/client/src/app/pages/pricing/pricing-page.html - 71 + 73 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 141 apps/client/src/app/pages/pricing/pricing-page.html - 215 + 219 @@ -3970,7 +3774,7 @@ Mude para o Ghostfolio Premium facilmente libs/ui/src/lib/i18n.ts - 11 + 13 @@ -3978,7 +3782,7 @@ Suporte da Comunidade apps/client/src/app/pages/pricing/pricing-page.html - 88 + 90 @@ -3986,7 +3790,7 @@ Suporte por Email e Chat apps/client/src/app/pages/pricing/pricing-page.html - 236 + 240 @@ -3994,7 +3798,7 @@ Mude para o Ghostfolio Premium ou Ghostfolio Open Source facilmente libs/ui/src/lib/i18n.ts - 10 + 12 @@ -4002,7 +3806,7 @@ Mude para o Ghostfolio Open Source ou Ghostfolio Basic facilmente libs/ui/src/lib/i18n.ts - 12 + 14 @@ -4013,12 +3817,12 @@ 2 - + Oops! Could not get the historical exchange rate from Oops! Não foi possível obter a taxa de câmbio histórica de apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 + 240 @@ -4046,7 +3850,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 226 + 230 @@ -4062,11 +3866,11 @@ Renovar Plano apps/client/src/app/components/header/header.component.html - 190 + 183 apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 + 21 apps/client/src/app/pages/pricing/pricing-page.html @@ -4075,7 +3879,7 @@ Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - A nossa oferta oficial Ghostfolio Premium na nuvem é a maneira mais fácil de começar. Com o tempo que poupa, esta será a melhor opção para a maioria das pessoas. A receita é utilizada para cobrir a infraestrutura de hospedagem e financiar o desenvolvimento contínuo do Ghostfolio. + A nossa oferta oficial Ghostfolio Premium na nuvem é a maneira mais fácil de começar. Com o tempo que poupa, esta será a melhor opção para a maioria das pessoas. A receita é utilizada para cobrir a infraestrutura de hospedagem e financiar o desenvolvimento contínuo do Ghostfolio. apps/client/src/app/pages/pricing/pricing-page.html 6 @@ -4086,7 +3890,7 @@ Personificar Utilizador apps/client/src/app/components/admin-users/admin-users.html - 222 + 218 @@ -4094,15 +3898,15 @@ Apagar Utilizador apps/client/src/app/components/admin-users/admin-users.html - 232 + 229 Do you really want to delete these activities? - Deseja mesmo eliminar todas as suas atividades? + Deseja mesmo eliminar estas atividades? libs/ui/src/lib/activities-table/activities-table.component.ts - 216 + 225 @@ -4110,7 +3914,7 @@ Por Prestador de ETF apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 + 306 @@ -4118,7 +3922,7 @@ Atualizar plataforma apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 + 8 @@ -4126,7 +3930,7 @@ Adicionar plataforma apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + 10 @@ -4134,15 +3938,15 @@ Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 + 352 apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 + 51 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + 25 @@ -4150,7 +3954,7 @@ Deseja mesmo eliminar esta plataforma? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 + 86 @@ -4166,7 +3970,7 @@ Atualizar saldo em Dinheiro apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 + 112 @@ -4234,7 +4038,7 @@ Essa atividade já existe. libs/ui/src/lib/i18n.ts - 16 + 19 @@ -4242,7 +4046,7 @@ Gerir Referências apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 + 35 @@ -4258,7 +4062,7 @@ Selecionar Ficheiro apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 + 22 @@ -4266,7 +4070,7 @@ Selecionar Dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + 113 @@ -4274,7 +4078,7 @@ Selecionar Atividades apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 + 115 @@ -4306,7 +4110,7 @@ Finanças pessoais apps/client/src/app/app.component.html - 55 + 54 @@ -4314,7 +4118,7 @@ Perguntas Frequentes (FAQ) apps/client/src/app/app.component.html - 76 + 80 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -4326,7 +4130,7 @@ Série Atual apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 + 317 @@ -4334,7 +4138,7 @@ Série mais Longa apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 + 326 @@ -4342,7 +4146,7 @@ Meses libs/ui/src/lib/i18n.ts - 20 + 22 @@ -4350,7 +4154,7 @@ Anos libs/ui/src/lib/i18n.ts - 28 + 30 @@ -4358,7 +4162,7 @@ Mês libs/ui/src/lib/i18n.ts - 19 + 21 @@ -4366,15 +4170,15 @@ Ano libs/ui/src/lib/i18n.ts - 27 + 29 Liabilities - Liabilities + Responsabilidades apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 + 279 apps/client/src/app/pages/features/features-page.html @@ -4383,7 +4187,7 @@ Changelog - Changelog + Registo de alterações apps/client/src/app/pages/about/about-page.component.ts 49 @@ -4395,7 +4199,7 @@ License - License + Licença apps/client/src/app/pages/about/about-page.component.ts 54 @@ -4407,7 +4211,7 @@ Stocks - Stocks + Ações apps/client/src/app/pages/features/features-page.html 15 @@ -4423,7 +4227,7 @@ Bonds - Bonds + Obrigações apps/client/src/app/pages/features/features-page.html 38 @@ -4431,7 +4235,7 @@ Cryptocurrencies - Cryptocurrencies + Criptomoedas apps/client/src/app/pages/features/features-page.html 51 @@ -4439,7 +4243,7 @@ Wealth Items - Wealth Items + Artigos de património apps/client/src/app/pages/features/features-page.html 76 @@ -4447,7 +4251,7 @@ Import and Export - Import and Export + Importação e exportação apps/client/src/app/pages/features/features-page.html 115 @@ -4455,7 +4259,7 @@ Multi-Accounts - Multi-Accounts + Múltiplas contas apps/client/src/app/pages/features/features-page.html 127 @@ -4463,7 +4267,7 @@ Portfolio Calculations - Portfolio Calculations + Cálculos do portefólio apps/client/src/app/pages/features/features-page.html 141 @@ -4471,42 +4275,42 @@ Dark Mode - Dark Mode + Modo escuro apps/client/src/app/pages/features/features-page.html - 177 + 178 Market Mood - Market Mood + Humor do mercado apps/client/src/app/pages/features/features-page.html - 205 + 206 Static Analysis - Static Analysis + Análise estática apps/client/src/app/pages/features/features-page.html - 224 + 225 Multi-Language - Multi-Language + Multilíngua apps/client/src/app/pages/features/features-page.html - 241 + 242 Open Source Software - Open Source Software + Software de código aberto apps/client/src/app/pages/features/features-page.html - 275 + 278 @@ -4514,7 +4318,7 @@ Liability libs/ui/src/lib/i18n.ts - 36 + 39 @@ -4522,12 +4326,12 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + 304 Add Asset Profile - Add Asset Profile + Adicionar perfil do ativo apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 7 @@ -4535,7 +4339,7 @@ Personal Finance Tools - Personal Finance Tools + Ferramentas de finanças pessoais apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts 14 @@ -4543,7 +4347,7 @@ Discover Open Source Alternatives for Personal Finance Tools - Discover Open Source Alternatives for Personal Finance Tools + Descubra alternativas de software livre para ferramentas de finanças pessoais apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 4 @@ -4551,11026 +4355,2666 @@ Founded - Founded + Fundada - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 72 + + + Origin + Origem - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region + Região - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in + Disponível em - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes + ✅ Sim - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No + ❌ Não - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No + ❌ Não - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting + Auto-hospedagem - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously + Utilizar anonimamente - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan + Plano gratuito - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Notes + Notas - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Acompanhe, analise e visualize o seu património sem esforço com a Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Personal Finance Tools + Ferramentas de finanças pessoais - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Guides + Guias - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/resources/resources-page.html + 22 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + + + Glossary + Glossário + + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Stocks, ETFs, bonds, cryptocurrencies, commodities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + Mortgages, personal loans, credit cards + Hipotecas, crédito pessoal, cartões de crédito - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + Luxury items, real estate, private companies + Artigos de luxo, bens imobiliários, empresas privadas - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Buy + Comprar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 34 + + + Valuable + Valuable - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 38 + + + ETFs without Countries + ETFs without Countries - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + ETFs without Sectors + ETFs without Sectors - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 + + + Assets + Ativos - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + Preset + Predefinição - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 24 + + + By Market + Por mercado - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Asia-Pacific + Ásia-Pacífico - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 5 + + + Japan + Japão - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/i18n.ts + 83 + + + Welcome to Ghostfolio + Bem-vindo à Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Setup your accounts + Configurar as suas contas - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Obtenha uma visão financeira abrangente adicionando as suas contas bancárias e de corretagem. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + Capture your activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Registe as suas actividades de investimento para manter a sua carteira actualizada. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Monitorizar e analisar a sua carteira - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Acompanhe o seu progresso em tempo real com análises e conhecimentos abrangentes. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + No data available + Não há dados disponíveis - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Ready to take control of your personal finances? + Pronto para assumir o controlo das suas finanças pessoais? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + Setup accounts + Configurar contas - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 + apps/client/src/app/components/home-overview/home-overview.html + 44 - - Origin - Origin + + Biometric Authentication + Autenticação biométrica - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 6 + + + Active Users + Utilizadores ativos - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 62 + + + New Users + Novos utilizadores - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 51 + + + Users in Slack community + Utilizadores na comunidade Slack - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 75 + + + Contributors on GitHub + Colaboradores em GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 89 + + + Stars on GitHub + Estrelas no GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 103 + + + Pulls on Docker Hub + Pulls on Docker Hub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 106 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 117 + + + Uptime + Tempo de funcionamento - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/open/open-page.html + 132 + + + Export Data + Exportar dados - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 + + + Currencies + Moedas - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 + + + Our + Our - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + Visit + Visit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + Discover other exciting Open Source Software projects + Descubra outros projectos interessantes de software de fonte aberta - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + Frequently Asked Questions (FAQ) + Perguntas frequentes (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 + + + Check out the numerous features of Ghostfolio to manage your wealth + Check out the numerous features of Ghostfolio to manage your wealth - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/features/features-page.html + 6 + + + Discover the latest Ghostfolio updates and insights on personal finance + Discover the latest Ghostfolio updates and insights on personal finance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + Manage your wealth like a boss + Manage your wealth like a boss - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started + Começar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Monthly Active Users + Monthly Active Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 70 + + + As seen in + As seen in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + Protect your assets. Refine your personal investment strategy. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 229 + + + 360° View + 360° View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Web3 Ready + Web3 Ready - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + Use Ghostfolio anonymously and own your financial data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source + Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. + Benefit from continuous improvements through a strong community. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + Why Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 272 + + + Ghostfolio is for you if you are... + Ghostfolio is for you if you are... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + trading stocks, ETFs or cryptocurrencies on multiple platforms - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy + pursuing a buy & hold strategy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition + interested in getting insights of your portfolio composition - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership + valuing privacy and data ownership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism + into minimalism - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 299 + + + caring about diversifying your financial resources + caring about diversifying your financial resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence + interested in financial independence - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in + saying no to spreadsheets in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list + still reading this list - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio + Learn more about Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 319 + + + What our users are saying + What our users are saying - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + Members from around the globe are using Ghostfolio Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + How does Ghostfolio work? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Sign up anonymously* + Sign up anonymously* - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 392 + + + * no e-mail address nor credit card required + * no e-mail address nor credit card required - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 + apps/client/src/app/pages/landing/landing-page.html + 394 - - Region - Region + + Add any of your historical transactions + Add any of your historical transactions - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 405 + + + Get valuable insights of your portfolio composition + Get valuable insights of your portfolio composition - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 417 + + + Are you ready? + Are you ready? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 431 + + + Live Demo + Live Demo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 49 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 451 + + + Get the full picture of your personal finances across multiple platforms. + Get the full picture of your personal finances across multiple platforms. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 + apps/client/src/app/pages/landing/landing-page.html + 242 + + + Get started in only 3 steps + Get started in only 3 steps - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - Available in - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ Yes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - Self-Hosting - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - Use anonymously - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - Free Plan - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Notes - Notes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - - Personal Finance Tools - Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - - Guides - Guides - - apps/client/src/app/pages/resources/resources-page.html - 22 - - - - Glossary - Glossary - - apps/client/src/app/pages/resources/resources-page.html - 92 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - Luxury items, real estate, private companies - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Buy - Buy - - libs/ui/src/lib/i18n.ts - 31 - - - - Valuable - Valuable - - libs/ui/src/lib/i18n.ts - 35 - - - - ETFs without Countries - ETFs without Countries - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 - - - - ETFs without Sectors - ETFs without Sectors - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 - - - - Assets - Assets - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 - - - - Preset - Preset - - libs/ui/src/lib/i18n.ts - 22 - - - - By Market - By Market - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Asia-Pacific - Asia-Pacific - - libs/ui/src/lib/i18n.ts - 5 - - - - Japan - Japan - - libs/ui/src/lib/i18n.ts - 17 - - - - Welcome to Ghostfolio - Welcome to Ghostfolio - - apps/client/src/app/components/home-overview/home-overview.html - 7 - - - - Setup your accounts - Setup your accounts - - apps/client/src/app/components/home-overview/home-overview.html - 15 - - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Get a comprehensive financial overview by adding your bank and brokerage accounts. - - apps/client/src/app/components/home-overview/home-overview.html - 17 - - - - Capture your activities - Capture your activities - - apps/client/src/app/components/home-overview/home-overview.html - 24 - - - - Record your investment activities to keep your portfolio up to date. - Record your investment activities to keep your portfolio up to date. - - apps/client/src/app/components/home-overview/home-overview.html - 26 - - - - Monitor and analyze your portfolio - Monitor and analyze your portfolio - - apps/client/src/app/components/home-overview/home-overview.html - 33 - - - - Track your progress in real-time with comprehensive analysis and insights. - Track your progress in real-time with comprehensive analysis and insights. - - apps/client/src/app/components/home-overview/home-overview.html - 35 - - - - No data available - No data available - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - Ready to take control of your personal finances? - Ready to take control of your personal finances? - - apps/client/src/app/components/home-overview/home-overview.html - 8 - - - - Setup accounts - Setup accounts - - apps/client/src/app/components/home-overview/home-overview.html - 48 - - - - Biometric Authentication - Biometric Authentication - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - - apps/client/src/app/pages/open/open-page.html - 6 - - - - Active Users - Active Users - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - New Users - New Users - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Users in Slack community - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - Contributors on GitHub - - apps/client/src/app/pages/open/open-page.html - 89 - - - - Stars on GitHub - Stars on GitHub - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - Pulls on Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - Uptime - Uptime - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Export Data - Export Data - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - Currencies - Currencies - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 - - - - Our - Our - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Visit - Visit - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Discover other exciting Open Source Software projects - Discover other exciting Open Source Software projects - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Check out the numerous features of Ghostfolio to manage your wealth - Check out the numerous features of Ghostfolio to manage your wealth - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Discover the latest Ghostfolio updates and insights on personal finance - Discover the latest Ghostfolio updates and insights on personal finance - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - Manage your wealth like a boss - Manage your wealth like a boss - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - Get Started - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - or - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Monthly Active Users - Monthly Active Users - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - As seen in - As seen in - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - Protect your assets. Refine your personal investment strategy. - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - 360° View - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Web3 Ready - Web3 Ready - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - Use Ghostfolio anonymously and own your financial data. - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - Open Source - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - Benefit from continuous improvements through a strong community. - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - Why Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - Ghostfolio is for you if you are... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - pursuing a buy & hold strategy - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - valuing privacy and data ownership - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - into minimalism - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - caring about diversifying your financial resources - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - interested in financial independence - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - saying no to spreadsheets in - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - still reading this list - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - Learn more about Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - What our users are saying - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - How does Ghostfolio work? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Sign up anonymously* - Sign up anonymously* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - * no e-mail address nor credit card required - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - Add any of your historical transactions - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - Are you ready? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - Join now or check out the example account - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - Live Demo - Live Demo - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Get started in only 3 steps - Get started in only 3 steps - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - faq - perguntas-mais-frequentes - - apps/client/src/app/app.component.ts - 66 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 37 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 42 - - - apps/client/src/app/pages/faq/faq-page.component.ts - 48 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 17 - - - - features - funcionalidades - - apps/client/src/app/app.component.ts - 67 - - - apps/client/src/app/components/header/header.component.ts - 78 - - - apps/client/src/app/components/header/header.component.ts - 83 - - - apps/client/src/app/core/paths.ts - 4 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 14 - - - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 - - - - about - sobre - - apps/client/src/app/app.component.ts - 59 - - - apps/client/src/app/app.component.ts - 60 - - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/app.component.ts - 63 - - - apps/client/src/app/components/header/header.component.ts - 77 - - - apps/client/src/app/components/header/header.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 2 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 - - - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - apps/client/src/app/pages/about/about-page.component.ts - 74 - - - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 - - - - privacy-policy - politica-de-privacidade - - apps/client/src/app/app.component.ts - 64 - - - apps/client/src/app/core/paths.ts - 8 - - - apps/client/src/app/pages/about/about-page.component.ts - 63 - - - - license - licenca - - apps/client/src/app/app.component.ts - 61 - - - apps/client/src/app/core/paths.ts - 5 - - - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - - markets - mercados - - apps/client/src/app/app.component.ts - 68 - - - apps/client/src/app/components/header/header.component.ts - 79 - - - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 - - - - pricing - precos - - apps/client/src/app/app.component.ts - 69 - - - apps/client/src/app/components/header/header.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 - - - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 - - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 - - - apps/client/src/app/core/http-response.interceptor.ts - 83 - - - apps/client/src/app/core/paths.ts - 7 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 - - - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 - - - - register - registo - - apps/client/src/app/app.component.ts - 70 - - - apps/client/src/app/components/header/header.component.ts - 86 - - - apps/client/src/app/core/auth.guard.ts - 55 - - - apps/client/src/app/core/paths.ts - 9 - - - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 - - - apps/client/src/app/pages/features/features-page.component.ts - 31 - - - apps/client/src/app/pages/landing/landing-page.component.ts - 27 - - - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 - - - - resources - recursos - - apps/client/src/app/app.component.ts - 71 - - - apps/client/src/app/components/header/header.component.ts - 81 - - - apps/client/src/app/components/header/header.component.ts - 87 - - - apps/client/src/app/core/paths.ts - 10 - - - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 - - - apps/client/src/app/pages/features/features-page.component.ts - 32 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 - - - apps/client/src/app/pages/resources/resources-page.component.ts - 19 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - Open Source Alternative to - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - The Open Source Alternative to - The Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - open-source-alternative-to - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - - Ready to take your investments to the next level? - Ready to take your investments to the next level? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - - Get Started - Get Started - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - - Switzerland - Switzerland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 - - - - Global - Global - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 - - - - United States - United States - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 - - - - Belgium - Belgium - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 - - - - Germany - Germany - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 - - - - Austria - Austria - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 - - - - Italy - Italy - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 - - - - Netherlands - Netherlands - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 - - - - Thailand - Thailand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 - - - - New Zealand - New Zealand - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 - - - - Czech Republic - Czech Republic - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 - - - - (Last 24 hours) - (Last 24 hours) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - (Last 30 days) - (Last 30 days) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - (Last 90 days) - (Last 90 days) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Choose or drop a file here - Choose or drop a file here - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - You are using the Live Demo. - You are using the Live Demo. - - apps/client/src/app/app.component.html - 17 - - - - One-time fee, annual account fees - One-time fee, annual account fees - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - Distribution of corporate earnings - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Oops! Could not get the historical exchange rate from - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - Fee - - libs/ui/src/lib/i18n.ts - 33 - - - - Interest - Interest - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - Revenue for lending out money - Revenue for lending out money - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Add Tag - Add Tag - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - Do you really want to delete this tag? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - Update tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - Add tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - France - France - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - Currency Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - Account Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Transfer Cash Balance - Transfer Cash Balance - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Benchmark - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 - - - - Version - Version - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - Settings - Settings - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - From - From - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - To - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 - - - - Transfer - Transfer - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 - - - - Finland - Finland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 - - - - Membership - Membership - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 - - - - Access - Access - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 - - - - Find holding... - Find holding... - - libs/ui/src/lib/assistant/assistant.component.ts - 138 - - - - No entries... - No entries... - - libs/ui/src/lib/assistant/assistant.html - 63 - - - libs/ui/src/lib/assistant/assistant.html - 84 - - - - Asset Profile - Asset Profile - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 - - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 - - - - Search - Search - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Add Manually - Add Manually - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - Last All Time High - Last All Time High - - libs/ui/src/lib/benchmark/benchmark.component.html - 65 - - - - User - User - - apps/client/src/app/components/admin-users/admin-users.html - 29 - - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - - Canada - Canada - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 - - - - Open Source Wealth Management Software - Open Source Wealth Management Software - - apps/client/src/app/pages/i18n/i18n-page.html - 14 - - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 - - - - Poland - Poland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 - - - - South Africa - South Africa - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 - - - - Extreme Fear - Extreme Fear - - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/landing/landing-page.html + 386 - - Extreme Greed - Extreme Greed + + faq + perguntas-mais-frequentes - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/app.component.ts + 67 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/core/paths.ts + 3 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - - - 200-Day Trend - 200-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - - - Cash Balances - Cash Balances - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 - - Starting from - Starting from + + features + funcionalidades - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + about + sobre - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 64 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 83 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 2 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 50 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 74 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/landing/landing-page.component.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + privacy-policy + politica-de-privacidade - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 63 + + + license + licenca - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + mercados - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + precos - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + register + registo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 71 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 + + + resources + recursos - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 82 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/core/paths.ts + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore the links below to compare a variety of personal finance tools with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Alternativa de software livre ao - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Open Source Alternative to + Alternativa de software livre ao - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + The Open Source Alternative to + A alternativa de software livre ao - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + open-source-alternative-to + alternativa-de-software-livre-ao - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? + Ready to take your investments to the next level? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Get Started + Começar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 89 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 16 + + + (Last 24 hours) + (Last 24 hours) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Last 30 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Last 90 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 - - year - year + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Oops! Could not get the historical exchange rate from + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 36 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks + Account Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + Find holding... + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profile + Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Search + Search - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Add Manually - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + User + User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs tabela de comparação - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 95 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 98 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + is an invalid currency! + is an invalid currency! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + The current market price is + The current market price is - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + Test + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + Date Range + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 93 + + + Permission + Permission - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + Restricted view + Restricted view - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + Oops! Could not grant access. + Oops! Could not grant access. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + Private + Private - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Job Queue + Job Queue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + Market data is delayed for + Market data is delayed for - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + Investment + Investment - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + Absolute Asset Performance + Absolute Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + Asset Performance + Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + Absolute Currency Performance + Absolute Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + Currency Performance + Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + Absolute Net Performance + Absolute Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Net Performance + Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + Week to date + Week to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + Month to date + Month to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + Year to date + Year to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + View + View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + Oops! A data provider is experiencing the hiccups. + Oops! A data provider is experiencing the hiccups. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + Reset Filters + Reset Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 155 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + years + years - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Asset Classes + Asset Classes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 138 + + + Apply Filters + Apply Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 165 + + + Data Gathering + Data Gathering - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + General + General - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + Cloud + Cloud - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + self-hosting + self-hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + FAQ + FAQ - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! It looks like you’re making too many requests. Please slow down a bit. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + My Account + My Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Active + Active - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Closed + Closed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + Activity + Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + Dividend Yield + Dividend Yield - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + Execute Job + Execute Job - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + Priority + Priority - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - is an invalid currency! - is an invalid currency! + + This action is not allowed. + This action is not allowed. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Liquidity + Liquidity - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + libs/ui/src/lib/i18n.ts + 47 - - The current market price is - The current market price is + + Change with currency effect + Change with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - Test - Test + + Performance with currency effect + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Date Range - Date Range + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - libs/ui/src/lib/assistant/assistant.html - 93 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Permission - Permission + + Buy and sell + Buy and sell - apps/client/src/app/components/access-table/access-table.component.html - 17 + libs/ui/src/lib/i18n.ts + 8 + + + Delete Activities + Delete Activities - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 - - Restricted view - Restricted view + + Internationalization + Internationalization - apps/client/src/app/components/access-table/access-table.component.html - 25 + apps/client/src/app/app-routing.module.ts + 79 + + + Do you really want to close your Ghostfolio account? + Do you really want to close your Ghostfolio account? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Oops! Could not grant access. - Oops! Could not grant access. + + Danger Zone + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Private - Private + + Close Account + Close Account - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Job Queue - Job Queue + + By ETF Holding + By ETF Holding - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Market data is delayed for - Market data is delayed for + + Join now or check out the example account + Join now or check out the example account - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Investment - Investment + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 + + + Show more + Show more - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 - - Absolute Asset Performance - Absolute Asset Performance + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Asset Performance - Asset Performance + + Delete Profiles + Delete Profiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 - - Absolute Currency Performance - Absolute Currency Performance + + Do you really want to delete these profiles? + Do you really want to delete these profiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Currency Performance - Currency Performance + + Oops! Could not delete profiles. + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Absolute Net Performance - Absolute Net Performance + + Table + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Net Performance - Net Performance + + Chart + Chart - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Week to date - Week to date + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/public/public-page.html + 155 - - WTD - WTD + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Month to date - Month to date + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - MTD - MTD + + Budgeting + Budgeting - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - Year to date - Year to date + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - View - View + + Family Office + Family Office - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Investor + Investor - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Personal Finance + Personal Finance - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Reset Filters - Reset Filters + + Privacy + Privacy - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year - year + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - years - years + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Asset Classes - Asset Classes + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Apply Filters - Apply Filters + + Wealth + Wealth - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Data Gathering - Data Gathering + + Wealth Management + Wealth Management - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - General - General + + Australia + Australia - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 72 - - Cloud - Cloud + + Austria + Austria - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 73 + + + Belgium + Belgium - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 74 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 75 + + + Canada + Canada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - self-hosting - self-hosting + + Czech Republic + Czech Republic - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 77 - - FAQ - FAQ + + Finland + Finland - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 78 + + + France + France - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Germany + Germany - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 80 - - My Account - My Account + + India + India - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 81 - - Active - Active + + Italy + Italy - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 82 - - Closed - Closed + + Netherlands + Netherlands - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 84 - - Activity - Activity + + New Zealand + New Zealand - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 85 - - Dividend Yield - Dividend Yield + + Poland + Poland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 86 - - Execute Job - Execute Job + + Romania + Romania - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 87 - - Priority - Priority + + South Africa + South Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 88 - - This action is not allowed. - This action is not allowed. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 90 - - Liquidity - Liquidity + + United States + United States libs/ui/src/lib/i18n.ts - 44 + 91 - - Change with currency effect - Change with currency effect + + Error + Error - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Performance with currency effect - Performance with currency effect + + Deactivate + Deactivate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 67 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Activate + Activate - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 69 - - Buy and sell - Buy and sell + + Inactive + Inactive + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 + + + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Delete Activities + + Close + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalization + + Yes + Yes - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index c385999d2..5485c2ee1 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -6,27 +6,27 @@ hakkinda apps/client/src/app/app.component.ts - 59 + 60 apps/client/src/app/app.component.ts - 60 + 61 apps/client/src/app/app.component.ts - 61 + 62 apps/client/src/app/app.component.ts - 63 + 64 apps/client/src/app/components/header/header.component.ts - 77 + 78 apps/client/src/app/components/header/header.component.ts - 82 + 83 apps/client/src/app/core/paths.ts @@ -78,15499 +78,6943 @@ apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 + 18 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + faq + sss - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + apps/client/src/app/app.component.ts + 67 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 3 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 + + + features + oezellikler - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + license + lisans - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + piyasalar - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + fiyatlandirma - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + privacy-policy + gizlilik-politikasi - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + apps/client/src/app/pages/about/about-page.component.ts + 63 - - faq - sss + + register + kayit-ol apps/client/src/app/app.component.ts - 66 + 71 - apps/client/src/app/core/paths.ts - 3 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/resources-page.component.ts - 17 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 + + + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 - - features - oezellikler + + resources + kaynaklar apps/client/src/app/app.component.ts - 67 + 72 apps/client/src/app/components/header/header.component.ts - 78 + 82 apps/client/src/app/components/header/header.component.ts - 83 + 88 apps/client/src/app/core/paths.ts - 4 + 10 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts 13 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 + 14 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + Personal Finance + Kişisel Finans - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 + apps/client/src/app/app.component.html + 54 + + + Markets + Piyasalar - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 + apps/client/src/app/app.component.html + 58 - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 380 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 + apps/client/src/app/components/home-market/home-market.html + 2 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 + apps/client/src/app/pages/resources/resources-page.html + 56 + + + Resources + Piyasalar - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 + apps/client/src/app/app.component.html + 61 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 82 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 283 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 + apps/client/src/app/pages/resources/resources-page.html + 4 + + + About + Hakkında - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 351 + + + Blog + Blog - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 + apps/client/src/app/app.component.html + 70 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 + apps/client/src/app/pages/blog/blog-page.html + 5 + + + Changelog + Değişiklik Günlüğü - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 + apps/client/src/app/app.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + Features + Özellikler - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 + apps/client/src/app/app.component.html + 76 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 338 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 + apps/client/src/app/pages/features/features-page.html + 5 + + + Frequently Asked Questions (FAQ) + Sıkça Sorulan Sorular (SSS) - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 + apps/client/src/app/app.component.html + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 + apps/client/src/app/pages/about/overview/about-overview-page.html + 146 + + + License + Lisans - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 + apps/client/src/app/app.component.html + 85 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 + apps/client/src/app/pages/about/license/license-page.html + 4 + + + Pricing + Fiyatlandırma - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 + apps/client/src/app/app.component.html + 94 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 98 - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 294 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 365 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + Privacy Policy + Gizlilik Politikası - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 + apps/client/src/app/app.component.html + 100 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 + + + Community + Topluluk - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 + apps/client/src/app/app.component.html + 118 - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 83 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 88 - - - license - lisans - apps/client/src/app/app.component.ts - 61 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 96 - apps/client/src/app/pages/about/about-page.component.ts - 55 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 100 - - - markets - piyasalar - apps/client/src/app/app.component.ts - 68 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 105 - apps/client/src/app/components/header/header.component.ts - 79 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/features/features-page.html + 259 + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/app.component.html + 199 + + + Alias + Takma Ad - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 - - pricing - fiyatlandirma + + Grantee + Hibe Alan / Alıcı - apps/client/src/app/app.component.ts - 69 + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + Type + Tip - apps/client/src/app/components/header/header.component.ts - 80 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 + libs/ui/src/lib/activities-table/activities-table.component.html + 160 + + + Details + Ayrıntılar - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 + apps/client/src/app/components/access-table/access-table.component.html + 33 + + + Revoke + Geri Al - apps/client/src/app/core/http-response.interceptor.ts - 83 + apps/client/src/app/components/access-table/access-table.component.html + 62 + + + Do you really want to revoke this granted access? + Bu erişim iznini geri almayı gerçekten istiyor musunuz? - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/components/access-table/access-table.component.ts + 56 + + + Cash Balance + Nakit Bakiye - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 45 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + Equity + Menkul Kıymet - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 56 + + + Platform + Platform - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 65 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + Activities + İşlemler - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 61 - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 90 - - - privacy-policy - gizlilik-politikasi - apps/client/src/app/app.component.ts - 64 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 152 - apps/client/src/app/pages/about/about-page.component.ts - 63 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 44 - - - register - kayit-ol - apps/client/src/app/app.component.ts - 70 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 225 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Name + Ad - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/pages/features/features-page.component.ts - 31 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 60 - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 228 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 30 - - - resources - kaynaklar - apps/client/src/app/app.component.ts - 71 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/components/header/header.component.ts - 81 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 30 - apps/client/src/app/components/header/header.component.ts - 87 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 138 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 + libs/ui/src/lib/activities-table/activities-table.component.html + 137 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + + + Total + Toplam - apps/client/src/app/pages/features/features-page.component.ts - 32 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + Currency + Para Birimi - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 235 - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 144 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 275 + + + Value + Değer - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 207 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 210 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 274 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 277 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 280 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 283 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 256 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 292 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + + + Edit + Düzenle - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 215 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 78 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 92 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 71 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 429 + + + Delete + Sil - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 288 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 236 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 102 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 81 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 455 + + + Do you really want to delete this account? + Bu hesabı silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 110 + + + Symbol + Sembol - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 44 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 46 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 36 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 305 + + + Data Source + Veri Kaynağı - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 127 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 154 + + + Attempts + Deneme - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 81 + + + Created + Oluşturuldu - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 90 + + + Finished + Tamamlandı - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 99 + + + Status + Durum - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 108 + + + Delete Jobs + İşleri Sil - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 149 + + + Asset Profiles + Varlık Profili - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 + libs/ui/src/lib/assistant/assistant.html + 67 + + + Historical Market Data + Tarihsel Piyasa Verisi - apps/client/src/app/pages/resources/resources-page.component.ts - 19 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 - - Personal Finance - Kişisel Finans + + View Data + Veri Gör - apps/client/src/app/app.component.html - 55 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 164 - - Markets - Piyasalar + + View Stacktrace + Hata İzini Görüntüle - apps/client/src/app/app.component.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 171 + + + Delete Job + İşleri Sil - apps/client/src/app/components/header/header.component.html - 386 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 177 + + + Details for + Detaylar - apps/client/src/app/components/home-market/home-market.html + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 2 - - apps/client/src/app/pages/resources/resources-page.html - 56 - - - Resources - Piyasalar + + Date + Tarih - apps/client/src/app/app.component.html - 60 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 6 - apps/client/src/app/components/header/header.component.html - 80 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 160 - apps/client/src/app/components/header/header.component.html - 289 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - apps/client/src/app/pages/resources/resources-page.html - 4 + libs/ui/src/lib/activities-table/activities-table.component.html + 169 - - About - Hakkında + + Market Price + Piyasa Fiyatı - apps/client/src/app/app.component.html - 66 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 26 - apps/client/src/app/components/header/header.component.html - 111 - - - apps/client/src/app/components/header/header.component.html - 357 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 114 - - Blog - Blog - - apps/client/src/app/app.component.html - 68 - + + Cancel + İptal - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 204 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 46 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 378 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 43 - apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 42 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html - 209 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 181 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html - 141 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 65 - apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html - 168 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 427 - apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html - 178 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + Save + Kaydet - apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 202 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 48 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 385 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html - 233 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 50 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html - 243 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 49 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html - 154 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html - 273 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html - 148 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 434 + + + Currencies + Para Birimleri - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html - 270 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 + + + ETFs without Countries + Ülkesi Olmayan ETF’ler - apps/client/src/app/pages/blog/blog-page.html - 5 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 - - Changelog - Değişiklik Günlüğü + + ETFs without Sectors + Sektörü Olmayan ETF’ler - apps/client/src/app/app.component.html - 71 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 + + + Filter by... + Filtrele... - apps/client/src/app/pages/about/changelog/changelog-page.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 328 - - Features - Özellikler + + Asset Class + Varlık Sınıfı - apps/client/src/app/app.component.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 86 - apps/client/src/app/components/header/header.component.html - 344 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 - apps/client/src/app/pages/features/features-page.html - 5 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 245 - - - Frequently Asked Questions (FAQ) - Sıkça Sorulan Sorular (SSS) - apps/client/src/app/app.component.html - 76 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 232 - apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 354 - - License - Lisans - - apps/client/src/app/app.component.html - 80 - + + Asset Sub Class + Varlık Alt Sınıfı - apps/client/src/app/pages/about/license/license-page.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 95 - - - Pricing - Fiyatlandırma - apps/client/src/app/app.component.html - 86 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 170 - apps/client/src/app/components/header/header.component.html - 98 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 258 - apps/client/src/app/components/header/header.component.html - 301 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 241 - apps/client/src/app/components/header/header.component.html + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 370 + + + First Activity + İlk İşlem - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 104 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 143 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 213 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 + + + Activities Count + İşlem Sayısı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 113 + + + Historical Data + Tarihsel Veri - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 122 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 84 + + + Sectors Count + Sektör Sayısı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 131 + + + Countries Count + Ülke Sayısı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 140 + + + Gather Recent Data + Son Veriyi Getir - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 177 + + + Gather All Data + Tüm Veriyi Getir - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 180 + + + Gather Profile Data + Profil Verisini Getir - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 183 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 45 + + + Refresh + Yenile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + Gather Historical Data + Tarihsel Veriyi Getir - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 32 + + + Sector + Sektör - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 187 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 258 + + + Country + Ülke - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 198 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-users/admin-users.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 268 + + + Sectors + Sektörler - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 329 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 274 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/public/public-page.html + 50 + + + Countries + Ülkeler - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 340 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 286 + + + Symbol Mapping + Sembol Eşleştirme - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 292 + + + Scraper Configuration + Veri Toplayıcı Yapılandırması - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 + + + Note + Not - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 339 + + + Add Asset Profile + Varlık Profili Ekle - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 + + + Name, symbol or ISIN + Ad, sembol ya da ISIN - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + Please add a currency: + Lütfen bir para birimi giriniz: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 125 + + + Do you really want to delete this coupon? + Önbelleği temizlemeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 152 + + + Do you really want to delete this currency? + Bu para birimini silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 165 + + + Do you really want to flush the cache? + Önbelleği temizlemeyi gerçekten istiyor musunuz - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 202 + + + Please set your system message: + Lütfen sistem mesajınızı belirleyin: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 222 + + + User Count + Kullanıcı Sayısı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 + + + Activity Count + İşlem Sayısı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 + + + per User + Kullanıcı başına - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 + + + Exchange Rates + Döviz Kurları - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Add Currency + Para Birimi Ekle - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 104 + + + Tags + Etiketler - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 393 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 383 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + libs/ui/src/lib/assistant/assistant.html + 127 + + + User Signup + Kullanıcı Kaydı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 110 + + + Read-only Mode + Salt okunur mod - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 124 - - Privacy Policy - Gizlilik Politikası + + System Message + Sistem Mesajı - apps/client/src/app/app.component.html - 90 + apps/client/src/app/components/admin-overview/admin-overview.html + 148 + + + Set Message + Mesaj Belirle - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html - 4 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 - - Community - Topluluk + + Coupons + Kupon - apps/client/src/app/app.component.html - 105 + apps/client/src/app/components/admin-overview/admin-overview.html + 178 + + + Add + Ekle - apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + apps/client/src/app/components/admin-overview/admin-overview.html + 238 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + Housekeeping + Genel Ayarlar - apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + apps/client/src/app/components/admin-overview/admin-overview.html + 246 + + + Flush Cache + Önbelleği temizle - apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + apps/client/src/app/components/admin-overview/admin-overview.html + 250 + + + Add Platform + Platform Ekle - apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 11 + + + Url + Url - apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 51 - apps/client/src/app/pages/features/features-page.html - 256 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 - - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. + + Accounts + Hesaplar - apps/client/src/app/app.component.html - 182 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 65 - - - Alias - Takma Ad - apps/client/src/app/components/access-table/access-table.component.html - 3 + apps/client/src/app/components/admin-users/admin-users.html + 114 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/header/header.component.html + 54 - - - Grantee - Hibe Alan / Alıcı - apps/client/src/app/components/access-table/access-table.component.html - 10 + apps/client/src/app/components/header/header.component.html + 255 - - - Type - Tip - apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/pages/accounts/accounts-page.html + 4 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + libs/ui/src/lib/assistant/assistant.html + 107 + + + Do you really want to delete this platform? + Bu platformu silmeyi gerçekten istiyor musunuz? - libs/ui/src/lib/activities-table/activities-table.component.html - 160 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 86 - - Details - Ayrıntılar + + Update platform + Platformu Güncelle - apps/client/src/app/components/access-table/access-table.component.html - 32 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 - - Revoke - Geri Al + + Add platform + Platform Ekle - apps/client/src/app/components/access-table/access-table.component.html - 59 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 - - Do you really want to revoke this granted access? - Bu erişim iznini geri almayı gerçekten istiyor musunuz? + + Platforms + Platformlar - apps/client/src/app/components/access-table/access-table.component.ts - 50 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Cash Balance - Nakit Bakiye + + Do you really want to delete this user? + Bu kullanıcıyı silmeyi gerçekten istiyor musunu? - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 45 + apps/client/src/app/components/admin-users/admin-users.component.ts + 125 + + + User + Kullanıcı - apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + apps/client/src/app/components/header/header.component.html + 221 + + + Registration + Kayıt - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + apps/client/src/app/components/admin-users/admin-users.html + 97 - - Equity - Menkul Kıymet + + Engagement per Day + Günlük etkileşim - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 56 + apps/client/src/app/components/admin-users/admin-users.html + 157 - - Platform - Platform + + Last Request + Son Talep - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 65 + apps/client/src/app/components/admin-users/admin-users.html + 181 + + + Impersonate User + Kullanıcıyı Taklit Et - apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + apps/client/src/app/components/admin-users/admin-users.html + 218 + + + Delete User + Kullanıcıyı Sil - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/admin-users/admin-users.html + 229 - - Activities - İşlemler + + Performance + Performans - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 61 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 90 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 91 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 + + + Compare with... + Karşılaştır... - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 + + + Manage Benchmarks + Karşılaştırma Ölçütlerini Yönet - apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 + + + Portfolio + Portföy - apps/client/src/app/components/admin-users/admin-users.html - 134 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 116 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts + 41 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + Benchmark + Karşılaştırma Ölçütü - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 128 - - Name - Ad + + Current Market Mood + Piyasa Psikolojisi - apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 + + + Overview + Genel Bakış - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/components/header/header.component.html + 28 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 + apps/client/src/app/components/header/header.component.html + 237 + + + Portfolio + Portföy - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + apps/client/src/app/components/header/header.component.html + 41 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + apps/client/src/app/components/header/header.component.html + 247 + + + Admin Control + Yönetici Kontrolü - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + apps/client/src/app/components/header/header.component.html + 68 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + apps/client/src/app/components/header/header.component.html + 271 + + + Me + Ben - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 + apps/client/src/app/components/header/header.component.html + 203 + + + My Ghostfolio + Ghostfolio’m - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + apps/client/src/app/components/header/header.component.html + 262 + + + About Ghostfolio + Ghostfolio Hakkında - libs/ui/src/lib/activities-table/activities-table.component.html - 137 + apps/client/src/app/components/header/header.component.html + 303 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 - - Total - Toplam + + Sign in + Giriş - apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + apps/client/src/app/components/header/header.component.html + 394 - - - Currency - Para Birimi - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 + + + Get started + Haydi Başlayalım - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + apps/client/src/app/components/header/header.component.html + 404 + + + Sign in + Giriş - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + apps/client/src/app/app-routing.module.ts + 141 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/header/header.component.ts + 231 + + + Oops! Incorrect Security Token. + Hay Allah! Güvenlik anahtarı yanlış. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + apps/client/src/app/components/header/header.component.ts + 246 - libs/ui/src/lib/activities-table/activities-table.component.html - 275 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 - - Value - Değer + + Manage Activities + İşlemleri Yönet - apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + apps/client/src/app/components/home-holdings/home-holdings.html + 61 + + + Fear + Korku - apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + apps/client/src/app/components/home-market/home-market.component.ts + 27 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + libs/ui/src/lib/i18n.ts + 96 + + + Greed + Açgözlülük - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + apps/client/src/app/components/home-market/home-market.component.ts + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + libs/ui/src/lib/i18n.ts + 97 + + + Last Days + Son Gün - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + apps/client/src/app/components/home-market/home-market.html + 7 + + + Welcome to Ghostfolio + Ghostfolio’ya Hoşgeldiniz. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Ready to take control of your personal finances? + Kişisel finansal yönetiminizi ele almaya hazır mısınız? - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + Setup your accounts + Hesaplarınızı kurun - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Banka ve yatırım hesaplarınızı ekleyerek kapsamlı finansal durumunuzu görün. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + İşlemlerinizi kaydedin - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Yatırım işlemlerinizi kaydederek portföyünüzü güncel tutun. - libs/ui/src/lib/activities-table/activities-table.component.html - 256 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Portföyünüzü izleyin ve analiz edin. - libs/ui/src/lib/activities-table/activities-table.component.html - 292 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Kapsamlı analiz ve içgörülerle ilerleme durumunuzu gerçek zamanlı olarak takip edin. - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + apps/client/src/app/components/home-overview/home-overview.html + 35 - - Edit - Düzenle + + Setup accounts + Hesaplarınızı kurunuz - apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + apps/client/src/app/components/home-overview/home-overview.html + 44 + + + Add activity + İşlem ekle. - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + apps/client/src/app/components/home-overview/home-overview.html + 52 - apps/client/src/app/components/admin-overview/admin-overview.html - 80 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 8 + + + Summary + Özet - apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + apps/client/src/app/components/home-summary/home-summary.html + 2 + + + Total Amount + Toplam Tutar - apps/client/src/app/components/admin-tag/admin-tag.component.html - 71 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 + + + Savings Rate + Tasarruf Oranı - libs/ui/src/lib/activities-table/activities-table.component.html - 429 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 213 - - Delete - Sil + + Security Token + Güvenlik Jetonu - apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + or + veya - apps/client/src/app/components/admin-overview/admin-overview.html - 90 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 - apps/client/src/app/components/admin-overview/admin-overview.html - 199 + apps/client/src/app/pages/landing/landing-page.html + 47 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + apps/client/src/app/pages/landing/landing-page.html + 450 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 81 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/pages/register/register-page.html + 30 - libs/ui/src/lib/activities-table/activities-table.component.html - 455 + apps/client/src/app/pages/webauthn/webauthn-page.html + 29 - - Do you really want to delete this account? - Bu hesabı silmeyi gerçekten istiyor musunuz? + + Sign in with Internet Identity + İnternet Kimliği (Internet Identity) ile Oturum Aç - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 - - Symbol - Sembol - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 - + + Sign in with Google + Google ile Oturum Aç - apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 + + + Stay signed in + Oturumu açık tut - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 + + + Time in Market + Yatırım Süresi - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 + + + Buy + Al - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 - - Data Source - Veri Kaynağı + + Sell + Sat - apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 + + + Investment + Yatırım - apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 168 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 58 + + + Absolute Gross Performance + Toplam Brüt Performans - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 - - Attempts - Deneme + + Gross Performance + Brüt Performans - apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 85 - - Created - Oluşturuldu + + Absolute Net Performance + Toplam Net Performans - apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 126 - - Finished - Tamamlandı + + Net Performance + Net Performans - apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 141 - - Status - Durum + + Total Assets + Toplam Varlıklar - apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 167 - - Delete Jobs - İşleri Sil + + Valuables + Yatırım Varlıkları - apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 180 - - Asset Profiles - Varlık Profili + + Emergency Fund + Acil Durum Yedeği - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 192 - - - Historical Market Data - Tarihsel Piyasa Verisi - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + apps/client/src/app/pages/features/features-page.html + 89 - - - View Data - Veri Gör - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 122 - - View Stacktrace - Hata İzini Görüntüle + + Cash + Nakit - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 226 - - Delete Job - İşleri Sil + + Assets + Varlıklar - apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 - - Details for - Detaylar + + Buying Power + Alım Limiti - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 2 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 252 - - Date - Tarih + + Excluded from Analysis + Analize Dahil Edilmemiştir. - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 6 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 264 + + + Liabilities + Yükümlülükler - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 279 - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + apps/client/src/app/pages/features/features-page.html + 102 + + + Net Worth + Toplam Varlık - libs/ui/src/lib/activities-table/activities-table.component.html - 169 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 297 - - Market Price - Piyasa Fiyatı + + Annualized Performance + Yıllıklandırılmış Performans - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 26 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 309 + + + Dividend + Temettü apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + 181 - - - Cancel - İptal - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 46 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 343 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + apps/client/src/app/pages/features/features-page.html + 63 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 201 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 271 + + + Please enter the amount of your emergency fund: + Lütfen acil durum yedeği meblağını giriniz: - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts 58 + + + Change + Para Birimi - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 65 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 119 + + + Average Unit Price + Ortalama Birim Fiyat - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 103 - - Save - Kaydet + + Minimum Price + Asgari Fiyat - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 48 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 130 + + + Maximum Price + Azami Fiyat - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 146 + + + Quantity + Miktar - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 156 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 188 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 185 + + + Fees + Komisyon - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 203 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 108 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 176 - - Currencies - Para Birimleri + + Report Data Glitch + Rapor Veri Sorunu - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 448 - - ETFs without Countries - Ülkesi Olmayan ETF'ler + + Are you an ambitious investor who needs the full picture? + Tüm ayrıntılara hakim olmak isteyen iddialı bir yatırımcı mısınız? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 12 - - ETFs without Sectors - Sektörü Olmayan ETF'ler + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Bugün Ghostfolio Premium’a yükseltin ve yatırım deneyiminizi geliştirmek için ayrıcalıklı özelliklere erişim kazanın: - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 15 - - Filter by... - Filtrele... + + Portfolio Summary + Portföy Özeti - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 22 - - - Asset Class - Varlık Sınıfı - apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + apps/client/src/app/pages/pricing/pricing-page.html + 57 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + apps/client/src/app/pages/pricing/pricing-page.html + 203 + + + Portfolio Allocations + Portföy Dağılımı - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 26 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + apps/client/src/app/pages/features/features-page.html + 161 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + apps/client/src/app/pages/pricing/pricing-page.html + 61 - - - Asset Sub Class - Varlık Alt Sınıfı - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + apps/client/src/app/pages/pricing/pricing-page.html + 207 + + + Performance Benchmarks + Performans Ölçütleri - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 30 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + apps/client/src/app/pages/pricing/pricing-page.html + 65 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + apps/client/src/app/pages/pricing/pricing-page.html + 211 + + + FIRE Calculator + FIRE Hesaplayıcı - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 34 - - - First Activity - İlk İşlem - apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 + apps/client/src/app/pages/pricing/pricing-page.html + 69 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + apps/client/src/app/pages/pricing/pricing-page.html + 215 + + + Professional Data Provider + Profesyonel Veri Sağlayıcı - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 38 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 + apps/client/src/app/pages/pricing/pricing-page.html + 230 - - Activities Count - İşlem Sayısı + + and more Features... + ve daha fazla Özellik... - apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 42 - - - Historical Data - Tarihsel Veri - apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 + apps/client/src/app/pages/pricing/pricing-page.html + 85 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + apps/client/src/app/pages/pricing/pricing-page.html + 235 - - Sectors Count - Sektör Sayısı + + Get the tools to effectively manage your finances and refine your personal investment strategy. + Mali durumunuzu etkili bir şekilde yönetecek ve kişisel yatırım stratejinizi geliştirecek Araçları edinin. - apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 45 - - Countries Count - Ülke Sayısı + + Skip + Geç - apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 52 - - Gather Recent Data - Son Veriyi Getir + + Upgrade Plan + Üyeliğinizi Yükseltin - apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + apps/client/src/app/components/header/header.component.html + 178 - - - Gather All Data - Tüm Veriyi Getir - apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 59 - - - Gather Profile Data - Profil Verisini Getir - apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 16 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 + apps/client/src/app/pages/pricing/pricing-page.html + 271 - - Refresh - Yenile + + Today + Bugün - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + apps/client/src/app/components/toggle/toggle.component.ts 22 - - - Gather Historical Data - Tarihsel Veriyi Getir - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 32 + libs/ui/src/lib/assistant/assistant.component.ts + 215 - - Sector - Sektör + + YTD + YTD - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + apps/client/src/app/components/toggle/toggle.component.ts + 23 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + libs/ui/src/lib/assistant/assistant.component.ts + 225 - - Country - Ülke - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 - + + 1Y + 1Y - apps/client/src/app/components/admin-users/admin-users.html - 77 + apps/client/src/app/components/toggle/toggle.component.ts + 24 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + libs/ui/src/lib/assistant/assistant.component.ts + 229 - - Sectors - Sektörler + + 5Y + 5Y - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + apps/client/src/app/components/toggle/toggle.component.ts + 25 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Max + Maks. - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + apps/client/src/app/components/toggle/toggle.component.ts + 26 - apps/client/src/app/pages/public/public-page.html - 45 + libs/ui/src/lib/assistant/assistant.component.ts + 253 - - Countries - Ülkeler + + This feature is currently unavailable. + Bu özellik şu an için mevcut değil. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + apps/client/src/app/core/http-response.interceptor.ts + 53 + + + Please try again later. + Daha sonra tekrar deneyiniz. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + apps/client/src/app/core/http-response.interceptor.ts + 55 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + apps/client/src/app/core/http-response.interceptor.ts + 80 - - - Symbol Mapping - Sembol Eşleştirme - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 138 - - Scraper Configuration - Veri Toplayıcı Yapılandırması + + Oops! Something went wrong. + Hay Allah! Bir şeyler yanlış gitti. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + apps/client/src/app/core/http-response.interceptor.ts + 78 - - - Note - Not - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 136 + + + Okay + Tamam - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 + apps/client/src/app/core/http-response.interceptor.ts + 81 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 139 - - Add Asset Profile - Varlık Profili Ekle + + About + Hakkında - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 + apps/client/src/app/pages/about/about-page-routing.module.ts + 51 - - - Name, symbol or ISIN - Ad, sembol ya da ISIN - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + apps/client/src/app/pages/about/about-page.component.ts + 44 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts + 13 - - Please add a currency: - Lütfen bir para birimi giriniz: + + Changelog + Değişiklik Günlüğü - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + apps/client/src/app/pages/about/about-page.component.ts + 49 - - - Do you really want to delete this coupon? - Önbelleği temizlemeyi gerçekten istiyor musunuz? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts + 13 - - Do you really want to delete this currency? - Bu para birimini silmeyi gerçekten istiyor musunuz? + + License + Lisans - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + apps/client/src/app/pages/about/about-page.component.ts + 54 - - - Do you really want to flush the cache? - Önbelleği temizlemeyi gerçekten istiyor musunuz - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + apps/client/src/app/pages/about/license/license-page-routing.module.ts + 13 - - Please set your system message: - Lütfen sistem mesajınızı belirleyin: + + Privacy Policy + Gizlilik Politikası - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + apps/client/src/app/pages/about/about-page.component.ts + 62 - - - User Count - Kullanıcı Sayısı - apps/client/src/app/components/admin-overview/admin-overview.html + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts 13 - - Activity Count - İşlem Sayısı + + Our + Bizim - apps/client/src/app/components/admin-overview/admin-overview.html - 23 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 - - per User - Kullanıcı başına + + Discover other exciting Open Source Software projects + Diğer heyecan verici Açık Kaynak Yazılım projelerini keşfedin - apps/client/src/app/components/admin-overview/admin-overview.html - 32 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 - - Exchange Rates - Döviz Kurları + + Visit + Ziyaret et - apps/client/src/app/components/admin-overview/admin-overview.html - 37 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 - - Add Currency - Para Birimi Ekle + + Accounts + Hesaplar - apps/client/src/app/components/admin-overview/admin-overview.html - 104 + apps/client/src/app/pages/accounts/accounts-page-routing.module.ts + 13 - - Tags - Etiketler + + Update account + Hesabı Güncelle - apps/client/src/app/components/admin-settings/admin-settings.component.html - 10 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 + + + Add account + Hesap ekle - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 10 + + + Account ID + Hesap Kimliği - libs/ui/src/lib/assistant/assistant.html - 127 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 96 - - User Signup - Kullanıcı Kaydı + + Admin Control + Yönetici Denetimleri - apps/client/src/app/components/admin-overview/admin-overview.html - 110 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 20 - - Read-only Mode - Salt okunur mod + + Market Data + Piyasa Verileri - apps/client/src/app/components/admin-overview/admin-overview.html - 123 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 30 - - - System Message - Sistem Mesajı - apps/client/src/app/components/admin-overview/admin-overview.html - 145 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Set Message - Mesaj Belirle + + Settings + Ayarlar - apps/client/src/app/components/admin-overview/admin-overview.html - 165 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 35 - - - Coupons - Kupon - apps/client/src/app/components/admin-overview/admin-overview.html - 173 + apps/client/src/app/pages/admin/admin-page.component.ts + 32 - - - Add - Ekle - apps/client/src/app/components/admin-overview/admin-overview.html - 231 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 18 - libs/ui/src/lib/account-balances/account-balances.component.html - 93 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 35 - - Housekeeping - Genel Ayarlar + + Users + Kullanıcılar - apps/client/src/app/components/admin-overview/admin-overview.html - 238 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 40 - - - Flush Cache - Önbelleği temizle - apps/client/src/app/components/admin-overview/admin-overview.html - 242 + apps/client/src/app/pages/admin/admin-page.component.ts + 47 - - Add Platform - Platform Ekle + + Overview + Özet - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + apps/client/src/app/pages/admin/admin-page.component.ts + 27 - - - Url - Url - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 + apps/client/src/app/pages/home/home-page.component.ts + 37 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 + apps/client/src/app/pages/zen/zen-page-routing.module.ts + 19 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + apps/client/src/app/pages/zen/zen-page.component.ts + 34 - - Accounts - Hesaplar + + Blog + Blog - apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 + apps/client/src/app/pages/blog/blog-page-routing.module.ts + 13 + + + Discover the latest Ghostfolio updates and insights on personal finance + Son Ghostfolio güncellemelerini ve kişisel finans hakkındaki en son bilgileri keşfedin. - apps/client/src/app/components/admin-users/admin-users.html - 113 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + As you are already logged in, you cannot access the demo account. + Oturum açmış olduğunuz için demo hesabına erişemezsiniz. - apps/client/src/app/components/header/header.component.html - 54 + apps/client/src/app/pages/demo/demo-page.component.ts + 35 + + + Frequently Asked Questions (FAQ) + Sıkça Sorulan Sorular (SSS) - apps/client/src/app/components/header/header.component.html - 262 + apps/client/src/app/pages/faq/faq-page-routing.module.ts + 34 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 + apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts + 13 + + + Frequently Asked Questions (FAQ) + Sıkça Sorulan Sorular (SSS) - apps/client/src/app/pages/accounts/accounts-page.html + apps/client/src/app/pages/faq/overview/faq-overview-page.html 4 - libs/ui/src/lib/assistant/assistant.html - 107 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - - - Do you really want to delete this platform? - Bu platformu silmeyi gerçekten istiyor musunuz? - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 - - Update platform - Platformu Güncelle + + Features + Özellikler - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 + apps/client/src/app/app-routing.module.ts + 65 - - Add platform - Platform Ekle + + Check out the numerous features of Ghostfolio to manage your wealth + Varlıklarınızı yönetmek için Ghostfolio’nun özelliklerini keşfedin - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + apps/client/src/app/pages/features/features-page.html + 6 - - Platforms - Platformlar + + Stocks + Hisse Senetleri - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/pages/features/features-page.html + 15 - - Do you really want to delete this user? - Bu kullanıcıyı silmeyi gerçekten istiyor musunu? + + ETFs + ETF’ler - apps/client/src/app/components/admin-users/admin-users.component.ts - 113 + apps/client/src/app/pages/features/features-page.html + 25 - - User - Kullanıcı + + Bonds + Tahviller - apps/client/src/app/components/header/header.component.html - 230 + apps/client/src/app/pages/features/features-page.html + 38 - - Registration - Kayıt + + Cryptocurrencies + Kripto paralar - apps/client/src/app/components/admin-users/admin-users.html - 96 + apps/client/src/app/pages/features/features-page.html + 51 - - Engagement per Day - Günlük etkileşim + + Wealth Items + Varlık Kalemleri - apps/client/src/app/components/admin-users/admin-users.html - 158 + apps/client/src/app/pages/features/features-page.html + 76 - - Last Request - Son Talep + + Import and Export + İçe Aktar / Dışa Aktar - apps/client/src/app/components/admin-users/admin-users.html - 183 + apps/client/src/app/pages/features/features-page.html + 115 - - Impersonate User - Kullanıcıyı Taklit Et + + Multi-Accounts + Çoklu Hesaplar - apps/client/src/app/components/admin-users/admin-users.html - 222 + apps/client/src/app/pages/features/features-page.html + 127 - - Delete User - Kullanıcıyı Sil + + Portfolio Calculations + Portföy Hesaplama - apps/client/src/app/components/admin-users/admin-users.html - 232 + apps/client/src/app/pages/features/features-page.html + 141 - - Performance - Performans + + Dark Mode + Karanlık Mod - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 6 + apps/client/src/app/pages/features/features-page.html + 178 + + + Zen Mode + Zen Modu - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 173 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 142 + apps/client/src/app/pages/features/features-page.html + 191 - - Compare with... - Karşılaştır... + + Market Mood + Piyasa Modu - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 + apps/client/src/app/pages/features/features-page.html + 206 - - Manage Benchmarks - Karşılaştırma Ölçütlerini Yönet + + Static Analysis + Statik Analiz - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 + apps/client/src/app/pages/features/features-page.html + 225 - - Portfolio - Portföy + + Multi-Language + Çoklu Dil - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 116 + apps/client/src/app/pages/features/features-page.html + 242 + + + Open Source Software + Açık Kaynak Yazılım - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 41 + apps/client/src/app/pages/features/features-page.html + 278 - - Benchmark - Karşılaştırma Ölçütü + + Get Started + Başla - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 128 + apps/client/src/app/pages/features/features-page.html + 303 - - - Current Market Mood - Piyasa Psikolojisi - apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html - 12 + apps/client/src/app/pages/public/public-page.html + 164 - - Overview - Genel Bakış + + Holdings + Varlıklar - apps/client/src/app/components/header/header.component.html - 28 + apps/client/src/app/pages/home/home-page-routing.module.ts + 23 - apps/client/src/app/components/header/header.component.html - 244 + apps/client/src/app/pages/home/home-page-routing.module.ts + 28 - - - Portfolio - Portföy - apps/client/src/app/components/header/header.component.html - 41 + apps/client/src/app/pages/home/home-page.component.ts + 42 - apps/client/src/app/components/header/header.component.html - 254 + apps/client/src/app/pages/zen/zen-page.component.ts + 39 - - Admin Control - Yönetici Kontrolü + + Summary + Özet - apps/client/src/app/components/header/header.component.html - 67 + apps/client/src/app/pages/home/home-page-routing.module.ts + 33 - apps/client/src/app/components/header/header.component.html - 278 + apps/client/src/app/pages/home/home-page.component.ts + 47 - - Me - Ben + + Markets + Piyasalar - apps/client/src/app/components/header/header.component.html - 211 + apps/client/src/app/pages/home/home-page-routing.module.ts + 38 - - - My Ghostfolio - Ghostfolio'm - apps/client/src/app/components/header/header.component.html - 269 + apps/client/src/app/pages/home/home-page.component.ts + 52 - - - About Ghostfolio - Ghostfolio Hakkında - apps/client/src/app/components/header/header.component.html - 309 + apps/client/src/app/pages/markets/markets-page-routing.module.ts + 13 + + + Manage your wealth like a boss + Varlıklarınızı bir patron gibi yönetin - apps/client/src/app/pages/about/overview/about-overview-page.html + apps/client/src/app/pages/landing/landing-page.html 5 - - Sign in - Giriş - - apps/client/src/app/components/header/header.component.html - 399 - + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio, mali durumunuz için gizlilik odaklı, açık kaynaklı bir kontrol panelidir. Varlık dağılımınızı analiz edin, net değerinizi öğrenin ve sağlam, veriye dayalı yatırım kararları alın. - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 71 + apps/client/src/app/pages/landing/landing-page.html + 9 - - Get started - Haydi Başlayalım + + Get Started + Başla - apps/client/src/app/components/header/header.component.html - 411 + apps/client/src/app/pages/landing/landing-page.html + 41 - - - Sign in - Giriş - apps/client/src/app/app-routing.module.ts - 141 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Live Demo + Canlı Deneme - apps/client/src/app/components/header/header.component.ts - 229 + apps/client/src/app/pages/landing/landing-page.html + 49 - - - Oops! Incorrect Security Token. - Hay Allah! Güvenlik anahtarı yanlış. - apps/client/src/app/components/header/header.component.ts - 243 + apps/client/src/app/pages/landing/landing-page.html + 451 - - Manage Activities - İşlemleri Yönet + + Monthly Active Users + Aylık Aktif Kullanıcılar - apps/client/src/app/components/home-holdings/home-holdings.html - 32 + apps/client/src/app/pages/landing/landing-page.html + 70 - - Fear - Korku + + Stars on GitHub + GitHub’daki Beğeniler - apps/client/src/app/components/home-market/home-market.component.ts - 25 + apps/client/src/app/pages/landing/landing-page.html + 88 - libs/ui/src/lib/i18n.ts - 71 + apps/client/src/app/pages/open/open-page.html + 103 - - Greed - Açgözlülük + + Pulls on Docker Hub + Docker Hub’ta Çekmeler - apps/client/src/app/components/home-market/home-market.component.ts - 26 + apps/client/src/app/pages/landing/landing-page.html + 106 - libs/ui/src/lib/i18n.ts - 72 + apps/client/src/app/pages/open/open-page.html + 117 - - Last Days - Son Gün + + As seen in + Şurada görüldüğü gibi - apps/client/src/app/components/home-market/home-market.html - 6 + apps/client/src/app/pages/landing/landing-page.html + 115 - - Welcome to Ghostfolio - Ghostfolio'ya Hoşgeldiniz. - - apps/client/src/app/components/home-overview/home-overview.html - 7 + + Protect your assets. Refine your personal investment strategy. + varlıklarınızı koruyun. Kişisel yatırım stratejinizi geliştirin. + + apps/client/src/app/pages/landing/landing-page.html + 225 - - Ready to take control of your personal finances? - Kişisel finansal yönetiminizi ele almaya hazır mısınız? + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio, takip edilmeden hisse senetleri, ETF’ler veya kripto paraları izlemek isteyen yoğun insanlara güç verir. - apps/client/src/app/components/home-overview/home-overview.html - 8 + apps/client/src/app/pages/landing/landing-page.html + 229 - - Setup your accounts - Hesaplarınızı kurun + + 360° View + 360° Görünüm - apps/client/src/app/components/home-overview/home-overview.html - 15 + apps/client/src/app/pages/landing/landing-page.html + 240 - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Banka ve yatırım hesaplarınızı ekleyerek kapsamlı finansal durumunuzu görün. + + Get the full picture of your personal finances across multiple platforms. + Kişisel finansınızın tam resmini birden fazla platformda edinin. - apps/client/src/app/components/home-overview/home-overview.html - 17 + apps/client/src/app/pages/landing/landing-page.html + 242 - - Capture your activities - İşlemlerinizi kaydedin + + Web3 Ready + Web3 Hazır - apps/client/src/app/components/home-overview/home-overview.html - 24 + apps/client/src/app/pages/landing/landing-page.html + 251 - - Record your investment activities to keep your portfolio up to date. - Yatırım işlemlerinizi kaydederek portföyünüzü güncel tutun. + + Use Ghostfolio anonymously and own your financial data. + Ghostfolio’yu anonim olarak kullanın ve finansal verilerinize sahip çıkın. - apps/client/src/app/components/home-overview/home-overview.html - 26 + apps/client/src/app/pages/landing/landing-page.html + 253 - - Monitor and analyze your portfolio - Portföyünüzü izleyin ve analiz edin. + + Open Source + Açık Kaynak - apps/client/src/app/components/home-overview/home-overview.html - 33 + apps/client/src/app/pages/landing/landing-page.html + 261 - - Track your progress in real-time with comprehensive analysis and insights. - Kapsamlı analiz ve içgörülerle ilerleme durumunuzu gerçek zamanlı olarak takip edin. + + Benefit from continuous improvements through a strong community. + Güçlü bir topluluk aracılığıyla sürekli gelişmelerden faydalanın. - apps/client/src/app/components/home-overview/home-overview.html - 35 + apps/client/src/app/pages/landing/landing-page.html + 263 - - Setup accounts - Hesaplarınızı kurunuz + + Why Ghostfolio? + Neden Ghostfolio? - apps/client/src/app/components/home-overview/home-overview.html - 48 + apps/client/src/app/pages/landing/landing-page.html + 272 - - Add activity - İşlem ekle. + + Ghostfolio is for you if you are... + Ghostfolio tam size göre, - apps/client/src/app/components/home-overview/home-overview.html - 56 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + Birden fazla platformda hisse senedi, ETF veya kripto para ticareti yapıyorsanız, - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 8 + apps/client/src/app/pages/landing/landing-page.html + 280 - - This feature requires a subscription. - Bu özellik için abonelik gereklidir. + + pursuing a buy & hold strategy + al ve tut stratejisi izliyorsanız, - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition + Portföy bileşimine dair içgörüleri edinmek istiyorsanız, - apps/client/src/app/core/http-response.interceptor.ts - 69 + apps/client/src/app/pages/landing/landing-page.html + 291 - - Upgrade Plan - Aboneliğinizi Yükseltiniz + + valuing privacy and data ownership + Gizliliğe ve verilerinize sahip çıkmayı önemsiyorsanız - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism + minimalizme ilgi duyuyorsanız - apps/client/src/app/core/http-response.interceptor.ts - 72 + apps/client/src/app/pages/landing/landing-page.html + 299 - - Summary - Özet + + caring about diversifying your financial resources + finansal kaynaklarınızı çeşitlendirmeye önem veriyorsanız - apps/client/src/app/components/home-summary/home-summary.html - 2 + apps/client/src/app/pages/landing/landing-page.html + 303 - - Total Amount - Toplam Tutar + + interested in financial independence + finansal özgürlük peşindeyseniz - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 + apps/client/src/app/pages/landing/landing-page.html + 307 - - Savings Rate - Tasarruf Oranı + + saying no to spreadsheets in + elektronik tablo uygulamalarına hayır diyorsanız - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 + apps/client/src/app/pages/landing/landing-page.html + 311 - - Security Token - Güvenlik Jetonu + + still reading this list + bu listeyi hala okuyorsanız - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 11 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio + Ghostfolio hakkında daha fazla bilgi edinin - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 + apps/client/src/app/pages/landing/landing-page.html + 319 - - or - veya + + What our users are saying + What our users are saying - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 31 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + Dünyanın dört bir yanındaki kullanıcılar Ghostfolio Premium kullanıyorlar. apps/client/src/app/pages/landing/landing-page.html - 423 + 366 + + + How does Ghostfolio work? + How does Ghostfolio work? - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Get started in only 3 steps + Sadece 3 adımda başlayın - apps/client/src/app/pages/register/register-page.html - 29 + apps/client/src/app/pages/landing/landing-page.html + 386 + + + Sign up anonymously* + Anonim olarak kaydolun* - apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + apps/client/src/app/pages/landing/landing-page.html + 392 - - Sign in with Internet Identity - İnternet Kimliği (Internet Identity) ile Oturum Aç + + * no e-mail address nor credit card required + * e-posta adresi veya kredi kartı gerekmez - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 42 + apps/client/src/app/pages/landing/landing-page.html + 394 - - Sign in with Google - Google ile Oturum Aç + + Add any of your historical transactions + Herhangi bir geçmiş işleminizi ekleyin - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 52 + apps/client/src/app/pages/landing/landing-page.html + 405 - - Stay signed in - Oturumu açık tut + + Get valuable insights of your portfolio composition + Portföy bileşiminizle ilgili değerli bilgiler edinin - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 61 + apps/client/src/app/pages/landing/landing-page.html + 417 - - Time in Market - Yatırım Süresi + + Are you ready? + Are you ready? - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 3 + apps/client/src/app/pages/landing/landing-page.html + 431 - - Buy - Al + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + Ghostfolio’da şeffaflık, değerlerimizin temelinde yer alır. Kaynak kodunu açık kaynak yazılım (OSS) olarak AGPL-3.0 lisansı altında yayınlıyoruz ve platformun işletme durumunun toplu anahtar metriklerini açıkça paylaşıyoruz. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 31 + apps/client/src/app/pages/open/open-page.html + 6 - - Sell - Sat - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 43 - - - - Investment - Yatırım + + Active Users + Aktif Kullanıcılar - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 58 + apps/client/src/app/pages/open/open-page.html + 62 - - Absolute Gross Performance - Toplam Brüt Performans + + New Users + Yeni Kullanıcılar - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 70 + apps/client/src/app/pages/open/open-page.html + 51 - - Gross Performance - Brüt Performans + + Users in Slack community + Slack topluluğundaki kullanıcılar - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 85 + apps/client/src/app/pages/open/open-page.html + 75 - - Absolute Net Performance - Toplam Net Performans + + Contributors on GitHub + GitHub’da Katkıda Bulunanlar - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 + apps/client/src/app/pages/open/open-page.html + 89 - - Net Performance - Net Performans + + Uptime + Çalışma Süresi - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 + apps/client/src/app/pages/open/open-page.html + 132 - - Total Assets - Toplam Varlıklar + + Activities + İşlemler - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 + apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts + 13 - - - Valuables - Yatırım Varlıkları - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 39 - - Emergency Fund - Acil Durum Yedeği - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 - + + Do you really want to delete these activities? + Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/features/features-page.html - 89 + libs/ui/src/lib/activities-table/activities-table.component.ts + 225 + + + Update activity + İşlemi Güncelle - apps/client/src/app/pages/portfolio/fire/fire-page.html - 122 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 - - Cash - Nakit + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Hisse senetleri, ETF’ler, tahviller, kripto paralar, emtialar - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - - - Assets - Varlıklar - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 - - Buying Power - Alım Limiti + + Mortgages, personal loans, credit cards + Mortgage, kişisel krediler, kredi kartları - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 - - Excluded from Analysis - Analize Dahil Edilmemiştir. + + Luxury items, real estate, private companies + Lüks eşyalar, gayrimenkuller, özel şirketler - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 - - Liabilities - Yükümlülükler + + Account + Hesap - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 - apps/client/src/app/pages/features/features-page.html - 102 + libs/ui/src/lib/activities-table/activities-table.component.html + 307 - - Net Worth - Toplam Varlık + + Update Cash Balance + Nakit Bakiyesini Güncelle - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 - - Annualized Performance - Yıllıklandırılmış Performans + + Unit Price + Birim Fiyat - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 213 - - - Dividend - Temettü - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 286 - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 + libs/ui/src/lib/activities-table/activities-table.component.html + 209 + + + Oops! Could not get the historical exchange rate from + Hay Allah! Geçmiş döviz kuru alınamadı: - apps/client/src/app/pages/features/features-page.html - 63 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 240 + + + Fee + Komisyon apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 + 306 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 + 330 - - - Please enter the amount of your emergency fund: - Lütfen acil durum yedeği meblağını giriniz: - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 + libs/ui/src/lib/activities-table/activities-table.component.html + 233 - - Change - Para Birimi + + Import Activities + İşlemleri İçe Aktar - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 45 + + + Import Dividends + Temettüleri İçe Aktar - libs/ui/src/lib/holdings-table/holdings-table.component.html - 119 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 86 - - Average Unit Price - Ortalama Birim Fiyat + + Importing data... + Veri içe aktarılıyor... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 120 - - Minimum Price - Asgari Fiyat + + Import has been completed + İçe aktarma tamamlandı - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 128 - - Maximum Price - Azami Fiyat + + Validating data... + Veri doğrulanıyor... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 234 - - Quantity - Miktar + + Select Holding + Varlık Seç - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 + + + Select File + Dosya Seç - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 + + + Holding + Varlık - libs/ui/src/lib/activities-table/activities-table.component.html - 185 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 - - Fees - Komisyon + + Load Dividends + Temettü Yükle - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 + + + The following file formats are supported: + Aşağıdaki dosya formatları desteklenmektedir: - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 108 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 + + + Select Dividends + Temettü Seç - apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 - - Report Data Glitch - Rapor Veri Sorunu + + Select Activities + İşlemleri Seç - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 - - Are you an ambitious investor who needs the full picture? - Tüm ayrıntılara hakim olmak isteyen iddialı bir yatırımcı mısınız? + + Back + Geri - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 12 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 - - - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Bugün Ghostfolio Premium'a yükseltin ve yatırım deneyiminizi geliştirmek için ayrıcalıklı özelliklere erişim kazanın: - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 15 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 - - Portfolio Summary - Portföy Özeti + + Import + İçe Aktar - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 22 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 110 - apps/client/src/app/pages/pricing/pricing-page.html - 55 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - apps/client/src/app/pages/pricing/pricing-page.html - 199 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 - - Portfolio Allocations - Portföy Dağılımı + + Allocations + Dağılımlar - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 26 + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts + 13 - apps/client/src/app/pages/features/features-page.html - 160 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 44 + + + Allocations + Dağılımlar - apps/client/src/app/pages/pricing/pricing-page.html - 59 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 + + + Proportion of Net Worth + Net Değer Oranı - apps/client/src/app/pages/pricing/pricing-page.html - 203 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 - - Performance Benchmarks - Performans Ölçütleri + + By Platform + Platforma Göre - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 30 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 + + + By Currency + Para Birimine Göre - apps/client/src/app/pages/pricing/pricing-page.html + apps/client/src/app/pages/portfolio/allocations/allocations-page.html 63 + + + By Asset Class + Varlık Sınıfına Göre - apps/client/src/app/pages/pricing/pricing-page.html - 207 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 - - FIRE Calculator - FIRE Hesaplayıcı + + By Holding + Varlığa Göre - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 34 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 + + + By Sector + Sektöre Göre - apps/client/src/app/pages/pricing/pricing-page.html - 67 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 + + + By Continent + Kıtaya Göre - apps/client/src/app/pages/pricing/pricing-page.html - 211 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 - - Professional Data Provider - Profesyonel Veri Sağlayıcı + + By Market + Piyasaya Göre - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 38 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + + Regions + Bölgeler + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 - apps/client/src/app/pages/pricing/pricing-page.html - 226 + apps/client/src/app/pages/public/public-page.html + 87 - - and more Features... - ve daha fazla Özellik... + + Developed Markets + Gelişmiş Piyasalar - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 - apps/client/src/app/pages/pricing/pricing-page.html - 83 + apps/client/src/app/pages/public/public-page.html + 104 + + + Emerging Markets + Gelişmekte Olan Piyasalar - apps/client/src/app/pages/pricing/pricing-page.html + apps/client/src/app/pages/portfolio/allocations/allocations-page.html 231 - - - Get the tools to effectively manage your finances and refine your personal investment strategy. - Mali durumunuzu etkili bir şekilde yönetecek ve kişisel yatırım stratejinizi geliştirecek Araçları edinin. - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 45 + apps/client/src/app/pages/public/public-page.html + 113 - - Skip - Geç + + Other Markets + Diğer Piyasalar - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 52 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 - - - Upgrade Plan - Üyeliğinizi Yükseltin - apps/client/src/app/components/header/header.component.html - 182 + apps/client/src/app/pages/public/public-page.html + 122 + + + No data available + Veri mevcut değil - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 59 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/pricing/pricing-page.html - 268 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 - - Today - Bugün + + By Account + Hesaba Göre - apps/client/src/app/components/toggle/toggle.component.ts - 22 - - - libs/ui/src/lib/assistant/assistant.component.ts - 215 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 - - YTD - YTD + + By ETF Provider + ETF Sağlayıcısına Göre - apps/client/src/app/components/toggle/toggle.component.ts - 23 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 + + + By Country + Ülkeye Göre - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 - - 1Y - 1Y + + Analysis + Analiz - apps/client/src/app/components/toggle/toggle.component.ts - 24 + apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts + 13 - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 34 - - 5Y - 5Y + + Dividend + Temettü - apps/client/src/app/components/toggle/toggle.component.ts - 25 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 38 - libs/ui/src/lib/assistant/assistant.component.ts - 250 + libs/ui/src/lib/i18n.ts + 35 - - Max - Maks. + + Deposit + Para Yatırma - apps/client/src/app/components/toggle/toggle.component.ts - 26 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 361 + + + Monthly + Aylık - libs/ui/src/lib/assistant/assistant.component.ts - 253 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 50 - - This feature is currently unavailable. - Bu özellik şu an için mevcut değil. + + Yearly + Yıllık - apps/client/src/app/core/http-response.interceptor.ts - 60 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 51 - - Please try again later. - Daha sonra tekrar deneyiniz. + + Analysis + Analiz - apps/client/src/app/core/http-response.interceptor.ts - 62 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 + + + Top + Üst - apps/client/src/app/core/http-response.interceptor.ts - 91 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 166 + + + Bottom + Alt - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 138 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 215 - - Oops! Something went wrong. - Hay Allah! Bir şeyler yanlış gitti. + + Portfolio Evolution + Portföyün Gelişimi - apps/client/src/app/core/http-response.interceptor.ts - 89 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 268 + + + Investment Timeline + Yatırım Zaman Çizelgesi - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 136 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 296 - - Okay - Tamam + + Current Streak + Güncel Seri - apps/client/src/app/core/http-response.interceptor.ts - 92 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 317 + + + Longest Streak + En Uzun Seri - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 139 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 326 - - About - Hakkında + + Dividend Timeline + Temettü Zaman Çizelgesi - apps/client/src/app/pages/about/about-page-routing.module.ts - 51 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 354 + + + FIRE + FIRE - apps/client/src/app/pages/about/about-page.component.ts - 44 + apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts + 13 + + + FIRE + Finansal Özgürlük ve Erken Emeklilik (FIRE) - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 4 - - Changelog - Değişiklik Günlüğü + + Calculator + Hesap Makinesi - apps/client/src/app/pages/about/about-page.component.ts - 49 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 + + + 4% Rule + %4 Kuralı - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 - - License - Lisans + + Holdings + Varlıklar - apps/client/src/app/pages/about/about-page.component.ts - 54 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 77 - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + apps/client/src/app/components/home-holdings/home-holdings.html + 4 - - - Privacy Policy - Gizlilik Politikası - apps/client/src/app/pages/about/about-page.component.ts - 62 + apps/client/src/app/pages/public/public-page.html + 14 - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/ui/src/lib/assistant/assistant.html + 46 - - Our - Bizim + + Pricing + Fiyatlandırma - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 - - Discover other exciting Open Source Software projects - Diğer heyecan verici Açık Kaynak Yazılım projelerini keşfedin + + Pricing Plans + Fiyatlandırma Planları - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 + apps/client/src/app/pages/pricing/pricing-page.html + 4 - - Visit - Ziyaret et + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + Resmi Ghostfolio Premium bulut teklifimiz bir başlangıç yapmanın en kolay yoludur. Zaman tasarrufu sağladığı için çoğu insan için en iyi seçenek olacaktır. Gelir, barındırma altyapısının maliyetlerini karşılamak ve süregiden geliştirme işlerini finanse etmek için kullanılmaktadır. - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 + apps/client/src/app/pages/pricing/pricing-page.html + 6 - - Accounts - Hesaplar + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Ghostfolio’yu kendi altyapınızda çalıştırmayı tercih ederseniz, lütfen kaynak kodunu ve daha fazla talimatı GitHub adresinde bulun. - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + apps/client/src/app/pages/pricing/pricing-page.html + 26 - - Update account - Hesabı Güncelle + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + Kendi altyapılarında Ghostfolio’yu çalıştırmayı tercih eden teknolojiye hakim yatırımcılar için. - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 8 + apps/client/src/app/pages/pricing/pricing-page.html + 38 - - Add account - Hesap ekle + + Unlimited Transactions + Sınırsız İşlem - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 10 + apps/client/src/app/pages/pricing/pricing-page.html + 45 - - - Account ID - Hesap Kimliği - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 96 + apps/client/src/app/pages/pricing/pricing-page.html + 129 - - - Admin Control - Yönetici Denetimleri - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + apps/client/src/app/pages/pricing/pricing-page.html + 191 - - Market Data - Piyasa Verileri + + Unlimited Accounts + Kısıtsız Hesaplar - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + apps/client/src/app/pages/pricing/pricing-page.html + 49 - apps/client/src/app/pages/admin/admin-page.component.ts - 37 + apps/client/src/app/pages/pricing/pricing-page.html + 133 - - - Settings - Ayarlar - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + apps/client/src/app/pages/pricing/pricing-page.html + 195 + + + Portfolio Performance + Portföy Performansı - apps/client/src/app/pages/admin/admin-page.component.ts - 32 + apps/client/src/app/pages/pricing/pricing-page.html + 53 - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + apps/client/src/app/pages/pricing/pricing-page.html + 137 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 35 + apps/client/src/app/pages/pricing/pricing-page.html + 199 - - Users - Kullanıcılar + + Data Import and Export + Veri İçe Aktarma ve Dışa Aktarma - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + apps/client/src/app/pages/pricing/pricing-page.html + 73 - apps/client/src/app/pages/admin/admin-page.component.ts - 47 + apps/client/src/app/pages/pricing/pricing-page.html + 141 + + + apps/client/src/app/pages/pricing/pricing-page.html + 219 - - Overview - Özet + + Community Support + Topluluk Desteği - apps/client/src/app/pages/admin/admin-page.component.ts - 27 + apps/client/src/app/pages/pricing/pricing-page.html + 90 + + + Self-hosted, update manually. + Tarafınızca barındırılıyor, elle güncelleyiniz. - apps/client/src/app/pages/home/home-page.component.ts - 37 + apps/client/src/app/pages/pricing/pricing-page.html + 94 + + + Free + Ücretsiz - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + apps/client/src/app/pages/pricing/pricing-page.html + 95 - apps/client/src/app/pages/zen/zen-page.component.ts - 34 + apps/client/src/app/pages/pricing/pricing-page.html + 153 - - Blog - Blog + + For new investors who are just getting started with trading. + Alım satıma henüz başlamış yeni yatırımcılar için. - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + apps/client/src/app/pages/pricing/pricing-page.html + 123 - - Discover the latest Ghostfolio updates and insights on personal finance - Son Ghostfolio güncellemelerini ve kişisel finans hakkındaki en son bilgileri keşfedin. + + Fully managed Ghostfolio cloud offering. + Eksiksiz yönetilen Ghostfolio bulut teklifi. - apps/client/src/app/pages/blog/blog-page.html - 7 + apps/client/src/app/pages/pricing/pricing-page.html + 152 - - - As you are already logged in, you cannot access the demo account. - Oturum açmış olduğunuz için demo hesabına erişemezsiniz. - apps/client/src/app/pages/demo/demo-page.component.ts - 35 + apps/client/src/app/pages/pricing/pricing-page.html + 244 - - Frequently Asked Questions (FAQ) - Sıkça Sorulan Sorular (SSS) + + For ambitious investors who need the full picture of their financial assets. + Finansal varlıklarının tamamını görmeye ihtiyaç duyan hırslı yatırımcılar için. - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + apps/client/src/app/pages/pricing/pricing-page.html + 184 + + + Email and Chat Support + E-posta ve Sohbet Desteği - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/pricing/pricing-page.html + 240 - - Frequently Asked Questions (FAQ) - Sıkça Sorulan Sorular (SSS) + + Renew Plan + Aboneliği Yenile - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 + apps/client/src/app/components/header/header.component.html + 183 - apps/client/src/app/pages/faq/saas/saas-page.html - 4 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 21 - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 + apps/client/src/app/pages/pricing/pricing-page.html + 276 - - Features - Özellikler + + One-time payment, no auto-renewal. + Tek seferlik ödeme, otomatik yenileme yok. - apps/client/src/app/app-routing.module.ts - 65 + apps/client/src/app/pages/pricing/pricing-page.html + 280 - - Check out the numerous features of Ghostfolio to manage your wealth - Varlıklarınızı yönetmek için Ghostfolio'nun özelliklerini keşfedin + + Get Started + Başla - apps/client/src/app/pages/features/features-page.html - 6 + apps/client/src/app/pages/landing/landing-page.html + 446 - - Stocks - Hisse Senetleri + + It’s free. + Ücretsiz. - apps/client/src/app/pages/features/features-page.html - 15 + apps/client/src/app/pages/pricing/pricing-page.html + 301 - - ETFs - ETF'ler + + Hello, has shared a Portfolio with you! + Merhaba, size bir Portföy paylaştı! - apps/client/src/app/pages/features/features-page.html - 25 + apps/client/src/app/pages/public/public-page.html + 4 - - Bonds - Tahviller + + Currencies + Para birimleri - apps/client/src/app/pages/features/features-page.html - 38 + apps/client/src/app/pages/public/public-page.html + 32 - - Cryptocurrencies - Kripto paralar + + Continents + Kıtalar - apps/client/src/app/pages/features/features-page.html - 51 + apps/client/src/app/pages/public/public-page.html + 68 - - Wealth Items - Varlık Kalemleri + + Ghostfolio empowers you to keep track of your wealth. + Ghostfolio, varlıklarınızı takip etmenizi sağlar. - apps/client/src/app/pages/features/features-page.html - 76 + apps/client/src/app/pages/public/public-page.html + 159 - - Import and Export - İçe Aktar / Dışa Aktar + + Registration + Kayıt - apps/client/src/app/pages/features/features-page.html - 115 + apps/client/src/app/pages/register/register-page-routing.module.ts + 13 - - Multi-Accounts - Çoklu Hesaplar + + Create Account + Hesap Oluştur - apps/client/src/app/pages/features/features-page.html - 127 + apps/client/src/app/app.component.html + 13 - - - Portfolio Calculations - Portföy Hesaplama - apps/client/src/app/pages/features/features-page.html - 141 + apps/client/src/app/pages/register/register-page.html + 27 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 - - Dark Mode - Karanlık Mod + + Continue with Internet Identity + İnternet Kimliği ile Devam Et - apps/client/src/app/pages/features/features-page.html - 177 + apps/client/src/app/pages/register/register-page.html + 42 - - Zen Mode - Zen Modu + + Continue with Google + Google ile Devam Et - apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 + apps/client/src/app/pages/register/register-page.html + 53 + + + Copy to clipboard + Panoya Kopyala - apps/client/src/app/pages/features/features-page.html - 190 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 26 - - Market Mood - Piyasa Modu + + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - apps/client/src/app/pages/features/features-page.html - 205 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 32 - - Static Analysis - Statik Analiz + + Agree and continue + Kabul et ve devam et - apps/client/src/app/pages/features/features-page.html - 224 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 45 - - Multi-Language - Çoklu Dil + + Personal Finance Tools + Kişisel Finans Araçları - apps/client/src/app/pages/features/features-page.html - 241 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 14 - - Open Source Software - Açık Kaynak Yazılım + + open-source-alternative-to + Açık kaynak alternatif - apps/client/src/app/pages/features/features-page.html - 275 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 - - Get Started - Başla + + Open Source Alternative to + için Açık Kaynak Alternatif - apps/client/src/app/pages/features/features-page.html - 300 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + Discover Open Source Alternatives for Personal Finance Tools + Açık Kaynak Kişisel Finans Seçeneklerini Keşfet - apps/client/src/app/pages/public/public-page.html - 153 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 - - Holdings - Varlıklar + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Bu genel bakış sayfası, diğer kişisel finans araçlarının seçilmiş bir koleksiyonunun açık kaynak alternatifiGhostfolio ile karşılaştırmasını sunmaktadır.. Şeffaflığa, veri gizliliğine ve topluluk işbirliğine değer veriyorsanız Ghostfolio, finansal yönetiminizin kontrolünü ele almak için mükemmel Şeffaflığa, veri gizliliğine ve topluluk işbirliğine değer veriyorsanız Ghostfolio, finansal yönetiminizin kontrolünü ele almak için mükemmel bir fırsat sunuyor. - apps/client/src/app/pages/home/home-page-routing.module.ts - 23 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Aşağıdaki bağlantıları keşfedin, çeşitli kişisel finans araçlarını Ghostfolio ile karşılaştırın. - apps/client/src/app/pages/home/home-page-routing.module.ts - 28 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Open Source Alternative to - apps/client/src/app/pages/home/home-page.component.ts + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 42 + + + The Open Source Alternative to + Açık Kaynak Alternatifi - apps/client/src/app/pages/zen/zen-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 - - Summary - Özet + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/home/home-page-routing.module.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio, karşısında açık kaynak kodlu maliyet etkin bir seçenek sunmaktadır. gibi kısıtlı bütçeye sahip, finansal özgürlük ve erken emeklilik (FIRE) amaçlayan kulanıcılar için özellikle uygundur. Ghostfolio, topluluk içindeki geliştiricilerin ve kişisel finans meraklılarının kolektif çabası sayesinde yeteneklerini, güvenliğini ve kullanıcı deneyimini sürekli olarak geliştirmektedir. - apps/client/src/app/pages/home/home-page.component.ts - 47 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 - - Markets - Piyasalar + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Ghostfolio ve arasındaki ayrıntılı karşılaştırmanın yer aldığı aşağıdaki tabloya daha yakından bakarak Ghostfolio’nun karşısında kendisini nasıl konumlandırdığını kapsamlı bir şekilde değerlendirelim. Bu kapsamda özellikler, veri güvenliği, fiyat vb. hususları inceleyerek kişisel gereksinimleriniz için bilgiye dayalı bir seçim yapmanızı sağlayabileceği. - apps/client/src/app/pages/home/home-page-routing.module.ts + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 38 + + + Founded + Kuruluş - apps/client/src/app/pages/home/home-page.component.ts - 52 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 72 + + + Origin + Köken - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 - - Manage your wealth like a boss - Varlıklarınızı bir patron gibi yönetin + + Region + Bölge - apps/client/src/app/pages/landing/landing-page.html - 5 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio, mali durumunuz için gizlilik odaklı, açık kaynaklı bir kontrol panelidir. Varlık dağılımınızı analiz edin, net değerinizi öğrenin ve sağlam, veriye dayalı yatırım kararları alın. + + Available in + Mevcut - apps/client/src/app/pages/landing/landing-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 - - Get Started - Başla + + ✅ Yes + ✅ Evet - apps/client/src/app/pages/landing/landing-page.html - 41 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/landing/landing-page.html - 419 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - - - or - veya - apps/client/src/app/pages/landing/landing-page.html - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - - - Live Demo - Canlı Deneme - apps/client/src/app/pages/landing/landing-page.html - 49 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/landing/landing-page.html - 424 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - - - Monthly Active Users - Aylık Aktif Kullanıcılar - apps/client/src/app/pages/landing/landing-page.html - 69 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - - - Stars on GitHub - GitHub'daki Beğeniler - apps/client/src/app/pages/landing/landing-page.html - 87 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/open/open-page.html - 103 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Pulls on Docker Hub - Docker Hub'ta Çekmeler + + ❌ No + ❌ Hayır - apps/client/src/app/pages/landing/landing-page.html - 105 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/open/open-page.html - 117 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - - - As seen in - Şurada görüldüğü gibi - apps/client/src/app/pages/landing/landing-page.html - 113 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - - - Protect your assets. Refine your personal investment strategy. - varlıklarınızı koruyun. Kişisel yatırım stratejinizi geliştirin. - apps/client/src/app/pages/landing/landing-page.html - 215 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio, takip edilmeden hisse senetleri, ETF'ler veya kripto paraları izlemek isteyen yoğun insanlara güç verir. - apps/client/src/app/pages/landing/landing-page.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - - 360° View - 360° Görünüm - apps/client/src/app/pages/landing/landing-page.html - 230 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - - - Get the full picture of your personal finances across multiple platforms. - Kişisel finansınızın tam resmini birden fazla platformda edinin. - apps/client/src/app/pages/landing/landing-page.html - 232 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 - - Web3 Ready - Web3 Hazır + + ❌ No + ❌ Hayır - apps/client/src/app/pages/landing/landing-page.html - 241 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 - - Use Ghostfolio anonymously and own your financial data. - Ghostfolio'yu anonim olarak kullanın ve finansal verilerinize sahip çıkın. + + Self-Hosting + Tarafınızca Barındırma - apps/client/src/app/pages/landing/landing-page.html - 243 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 - - Open Source - Açık Kaynak + + Use anonymously + Anonim olarak kullan - apps/client/src/app/pages/landing/landing-page.html - 251 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 - - Benefit from continuous improvements through a strong community. - Güçlü bir topluluk aracılığıyla sürekli gelişmelerden faydalanın. + + Free Plan + Ücretsiz Plan - apps/client/src/app/pages/landing/landing-page.html - 253 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 - - Why Ghostfolio? - Neden Ghostfolio? + + Notes + Notlar - apps/client/src/app/pages/landing/landing-page.html - 262 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Ghostfolio is for you if you are... - Ghostfolio tam size göre, + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + Lütfen dikkat, Ghostfolio ve arasındaki karşılaştırmanın yer aldığı tablodaki bilgiler bağımsız araştırmalarımıza dayanmaktadır. Websitemizin ile ya da bu karşılaştırmada adı geçen herhangi bir ürün ve hizmet ile ilişkisi bulunmamaktadır. Kişisel finans araçlarının kapsamı geliştikçe, belirli ayrıntıların veya değişikliklerin doğrudan ilgili ürün sayfasından doğrulanması önemlidir. Verilerin yenilenmesi mi gerekiyor? Doğru verileri sağlamamıza yardımcı olmak için sayfamızı ziyaret edin. GitHub. - apps/client/src/app/pages/landing/landing-page.html - 263 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 - - trading stocks, ETFs or cryptocurrencies on multiple platforms - Birden fazla platformda hisse senedi, ETF veya kripto para ticareti yapıyorsanız, + + Ready to take your investments to the next level? + Ready to take your investments to the next level? - apps/client/src/app/pages/landing/landing-page.html - 270 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 - - pursuing a buy & hold strategy - al ve tut stratejisi izliyorsanız, + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Ghostfolio ile varlıklarınızı kolaylıkla takip edin, analiz edin ve görselleştirin. - apps/client/src/app/pages/landing/landing-page.html - 276 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 - - interested in getting insights of your portfolio composition - Portföy bileşimine dair içgörüleri edinmek istiyorsanız, + + Get Started + Başlayın - apps/client/src/app/pages/landing/landing-page.html - 281 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 - - valuing privacy and data ownership - Gizliliğe ve verilerinize sahip çıkmayı önemsiyorsanız + + Personal Finance Tools + Kişisel Finans Araçları - apps/client/src/app/pages/landing/landing-page.html - 286 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 - - into minimalism - minimalizme ilgi duyuyorsanız + + Switzerland + İsviçre - apps/client/src/app/pages/landing/landing-page.html - 289 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - - - caring about diversifying your financial resources - finansal kaynaklarınızı çeşitlendirmeye önem veriyorsanız - apps/client/src/app/pages/landing/landing-page.html - 293 + libs/ui/src/lib/i18n.ts + 89 - - interested in financial independence - finansal özgürlük peşindeyseniz + + Global + Küresel - apps/client/src/app/pages/landing/landing-page.html - 297 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - - - saying no to spreadsheets in - elektronik tablo uygulamalarına hayır diyorsanız - apps/client/src/app/pages/landing/landing-page.html - 301 + libs/ui/src/lib/i18n.ts + 16 - - still reading this list - bu listeyi hala okuyorsanız + + Resources + Kaynaklar - apps/client/src/app/pages/landing/landing-page.html - 304 + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 13 - - Learn more about Ghostfolio - Ghostfolio hakkında daha fazla bilgi edinin + + Guides + Kılavuzlar - apps/client/src/app/pages/landing/landing-page.html - 309 + apps/client/src/app/pages/resources/resources-page.html + 22 - - What our users are saying - What our users are saying + + Glossary + Sözlük - apps/client/src/app/pages/landing/landing-page.html - 317 + apps/client/src/app/pages/resources/resources-page.html + 124 - - Members from around the globe are using Ghostfolio Premium - Dünyanın dört bir yanındaki kullanıcılar Ghostfolio Premium kullanıyorlar. + + Grant access + Erişim izni ver - apps/client/src/app/pages/landing/landing-page.html - 349 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 - - How does Ghostfolio work? - How does Ghostfolio work? + + Public + Halka açık - apps/client/src/app/pages/landing/landing-page.html - 361 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 - - Get started in only 3 steps - Sadece 3 adımda başlayın + + My Ghostfolio + Benim Ghostfolio’m - apps/client/src/app/pages/landing/landing-page.html - 364 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 33 - - Sign up anonymously* - Anonim olarak kaydolun* + + Auto + Otomatik - apps/client/src/app/pages/landing/landing-page.html - 370 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 38 - - * no e-mail address nor credit card required - * e-posta adresi veya kredi kartı gerekmez + + Please enter your coupon code: + Lütfen kupon kodunuzu girin: - apps/client/src/app/pages/landing/landing-page.html - 372 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 118 - - Add any of your historical transactions - Herhangi bir geçmiş işleminizi ekleyin + + Could not redeem coupon code + Kupon kodu kullanılamadı - apps/client/src/app/pages/landing/landing-page.html - 383 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Get valuable insights of your portfolio composition - Portföy bileşiminizle ilgili değerli bilgiler edinin + + Coupon code has been redeemed + Kupon kodu kullanıldı - apps/client/src/app/pages/landing/landing-page.html - 395 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 140 - - Are you ready? - Are you ready? + + Reload + Yeniden Yükle - apps/client/src/app/pages/landing/landing-page.html - 407 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 141 - - Join now or check out the example account - Şİmdi katılın ya da örnek hesabı inceleyin + + Do you really want to remove this sign in method? + Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? - apps/client/src/app/pages/landing/landing-page.html - 408 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 252 - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - Ghostfolio'da şeffaflık, değerlerimizin temelinde yer alır. Kaynak kodunu açık kaynak yazılım (OSS) olarak AGPL-3.0 lisansı altında yayınlıyoruz ve platformun işletme durumunun toplu anahtar metriklerini açıkça paylaşıyoruz. + + Membership + Üyelik - apps/client/src/app/pages/open/open-page.html - 6 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Active Users - Aktif Kullanıcılar - - apps/client/src/app/pages/open/open-page.html - 40 - + + Valid until + Geçerli tarih - apps/client/src/app/pages/open/open-page.html - 62 + libs/ui/src/lib/membership-card/membership-card.component.html + 23 - - New Users - Yeni Kullanıcılar - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Slack topluluğundaki kullanıcılar - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - GitHub'da Katkıda Bulunanlar - - apps/client/src/app/pages/open/open-page.html - 89 - - - - Uptime - Çalışma Süresi - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Activities - İşlemler - - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 39 - - - - Do you really want to delete these activities? - Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz? - - libs/ui/src/lib/activities-table/activities-table.component.ts - 216 - - - - Update activity - İşlemi Güncelle - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Hisse senetleri, ETF'ler, tahviller, kripto paralar, emtialar - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - Mortgages, personal loans, credit cards - Mortgage, kişisel krediler, kredi kartları - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - Lüks eşyalar, gayrimenkuller, özel şirketler - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Account - Hesap - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 307 - - - - Update Cash Balance - Nakit Bakiyesini Güncelle - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 - - - - Unit Price - Birim Fiyat - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 209 - - - - Oops! Could not get the historical exchange rate from - Hay Allah! Geçmiş döviz kuru alınamadı: - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 - - - - Fee - Komisyon - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 233 - - - - Import Activities - İşlemleri İçe Aktar - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 - - - - Import Dividends - Temettüleri İçe Aktar - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 86 - - - - Importing data... - Veri içe aktarılıyor... - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 120 - - - - Import has been completed - İçe aktarma tamamlandı - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 128 - - - - Validating data... - Veri doğrulanıyor... - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 - - - - Select Holding - Varlık Seç - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 20 - - - - Select File - Dosya Seç - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 - - - - Holding - Varlık - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 - - - - Load Dividends - Temettü Yükle - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 - - - - The following file formats are supported: - Aşağıdaki dosya formatları desteklenmektedir: - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 - - - - Select Dividends - Temettü Seç - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 - - - - Select Activities - İşlemleri Seç - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 - - - - Back - Geri - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 - - - - Import - İçe Aktar - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 - - - - Allocations - Dağılımlar - - apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 44 - - - - Allocations - Dağılımlar - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 4 - - - - Proportion of Net Worth - Net Değer Oranı - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 12 - - - - By Platform - Platforma Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 44 - - - - By Currency - Para Birimine Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 63 - - - - By Asset Class - Varlık Sınıfına Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 - - - - By Holding - Varlığa Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 - - - - By Sector - Sektöre Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 - - - - By Continent - Kıtaya Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 - - - - By Market - Piyasaya Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Regions - Bölgeler - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 - - - apps/client/src/app/pages/public/public-page.html - 76 - - - - Developed Markets - Gelişmiş Piyasalar - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 - - - apps/client/src/app/pages/public/public-page.html - 93 - - - - Emerging Markets - Gelişmekte Olan Piyasalar - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 - - - apps/client/src/app/pages/public/public-page.html - 102 - - - - Other Markets - Diğer Piyasalar - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 - - - apps/client/src/app/pages/public/public-page.html - 111 - - - - No data available - Veri mevcut değil - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - By Account - Hesaba Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 - - - - By ETF Provider - ETF Sağlayıcısına Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 - - - - By Country - Ülkeye Göre - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 - - - - Analysis - Analiz - - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 34 - - - - Dividend - Temettü - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 38 - - - libs/ui/src/lib/i18n.ts - 32 - - - - Deposit - Para Yatırma - - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 - - - - Monthly - Aylık - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 50 - - - - Yearly - Yıllık - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 51 - - - - Analysis - Analiz - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 2 - - - - Top - Üst - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 - - - - Bottom - Alt - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 - - - - Portfolio Evolution - Portföyün Gelişimi - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 - - - - Investment Timeline - Yatırım Zaman Çizelgesi - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 - - - - Current Streak - Güncel Seri - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 - - - - Longest Streak - En Uzun Seri - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 - - - - Dividend Timeline - Temettü Zaman Çizelgesi - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 - - - - FIRE - FIRE - - apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts - 13 - - - - FIRE - Finansal Özgürlük ve Erken Emeklilik (FIRE) - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 4 - - - - Calculator - Hesap Makinesi - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 7 - - - - 4% Rule - %4 Kuralı - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 - - - - Holdings - Varlıklar - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 77 - - - apps/client/src/app/components/home-holdings/home-holdings.html - 4 - - - apps/client/src/app/pages/public/public-page.html - 14 - - - libs/ui/src/lib/assistant/assistant.html - 46 - - - - Pricing - Fiyatlandırma - - apps/client/src/app/pages/pricing/pricing-page-routing.module.ts - 13 - - - - Pricing Plans - Fiyatlandırma Planları - - apps/client/src/app/pages/pricing/pricing-page.html - 4 - - - - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - Resmi Ghostfolio Premium bulut teklifimiz bir başlangıç yapmanın en kolay yoludur. Zaman tasarrufu sağladığı için çoğu insan için en iyi seçenek olacaktır. Gelir, barındırma altyapısının maliyetlerini karşılamak ve süregiden geliştirme işlerini finanse etmek için kullanılmaktadır. - - apps/client/src/app/pages/pricing/pricing-page.html - 6 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - Ghostfolio'yu kendi altyapınızda çalıştırmayı tercih ederseniz, lütfen kaynak kodunu ve daha fazla talimatı GitHub adresinde bulun. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - Kendi altyapılarında Ghostfolio'yu çalıştırmayı tercih eden teknolojiye hakim yatırımcılar için. - - apps/client/src/app/pages/pricing/pricing-page.html - 36 - - - - Unlimited Transactions - Sınırsız İşlem - - apps/client/src/app/pages/pricing/pricing-page.html - 43 - - - apps/client/src/app/pages/pricing/pricing-page.html - 126 - - - apps/client/src/app/pages/pricing/pricing-page.html - 187 - - - - Unlimited Accounts - Kısıtsız Hesaplar - - apps/client/src/app/pages/pricing/pricing-page.html - 47 - - - apps/client/src/app/pages/pricing/pricing-page.html - 130 - - - apps/client/src/app/pages/pricing/pricing-page.html - 191 - - - - Portfolio Performance - Portföy Performansı - - apps/client/src/app/pages/pricing/pricing-page.html - 51 - - - apps/client/src/app/pages/pricing/pricing-page.html - 134 - - - apps/client/src/app/pages/pricing/pricing-page.html - 195 - - - - Data Import and Export - Veri İçe Aktarma ve Dışa Aktarma - - apps/client/src/app/pages/pricing/pricing-page.html - 71 - - - apps/client/src/app/pages/pricing/pricing-page.html - 138 - - - apps/client/src/app/pages/pricing/pricing-page.html - 215 - - - - Community Support - Topluluk Desteği - - apps/client/src/app/pages/pricing/pricing-page.html - 88 - - - - Self-hosted, update manually. - Tarafınızca barındırılıyor, elle güncelleyiniz. - - apps/client/src/app/pages/pricing/pricing-page.html - 92 - - - - Free - Ücretsiz - - apps/client/src/app/pages/pricing/pricing-page.html - 93 - - - apps/client/src/app/pages/pricing/pricing-page.html - 150 - - - - For new investors who are just getting started with trading. - Alım satıma henüz başlamış yeni yatırımcılar için. - - apps/client/src/app/pages/pricing/pricing-page.html - 120 - - - - Fully managed Ghostfolio cloud offering. - Eksiksiz yönetilen Ghostfolio bulut teklifi. - - apps/client/src/app/pages/pricing/pricing-page.html - 149 - - - apps/client/src/app/pages/pricing/pricing-page.html - 240 - - - - For ambitious investors who need the full picture of their financial assets. - Finansal varlıklarının tamamını görmeye ihtiyaç duyan hırslı yatırımcılar için. - - apps/client/src/app/pages/pricing/pricing-page.html - 180 - - - - Email and Chat Support - E-posta ve Sohbet Desteği - - apps/client/src/app/pages/pricing/pricing-page.html - 236 - - - - Renew Plan - Aboneliği Yenile - - apps/client/src/app/components/header/header.component.html - 190 - - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 - - - apps/client/src/app/pages/pricing/pricing-page.html - 276 - - - - One-time payment, no auto-renewal. - Tek seferlik ödeme, otomatik yenileme yok. - - apps/client/src/app/pages/pricing/pricing-page.html - 280 - - - - Get Started - Başla - - apps/client/src/app/pages/pricing/pricing-page.html - 291 - - - - It’s free. - Ücretsiz. - - apps/client/src/app/pages/pricing/pricing-page.html - 294 - - - - Hello, has shared a Portfolio with you! - Merhaba, size bir Portföy paylaştı! - - apps/client/src/app/pages/public/public-page.html - 4 - - - - Currencies - Para birimleri - - apps/client/src/app/pages/public/public-page.html - 30 - - - - Continents - Kıtalar - - apps/client/src/app/pages/public/public-page.html - 60 - - - - Ghostfolio empowers you to keep track of your wealth. - Ghostfolio, varlıklarınızı takip etmenizi sağlar. - - apps/client/src/app/pages/public/public-page.html - 148 - - - - Registration - Kayıt - - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 - - - - Create Account - Hesap Oluştur - - apps/client/src/app/app.component.html - 18 - - - apps/client/src/app/pages/register/register-page.html - 26 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 2 - - - - Continue with Internet Identity - İnternet Kimliği ile Devam Et - - apps/client/src/app/pages/register/register-page.html - 41 - - - - Continue with Google - Google ile Devam Et - - apps/client/src/app/pages/register/register-page.html - 51 - - - - Copy to clipboard - Panoya Kopyala - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - Kabul et ve devam et - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 - - - - Personal Finance Tools - Kişisel Finans Araçları - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 - - - - open-source-alternative-to - Açık kaynak alternatif - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Open Source Alternative to - için Açık Kaynak Alternatif - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - Discover Open Source Alternatives for Personal Finance Tools - Açık Kaynak Kişisel Finans Seçeneklerini Keşfet - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Bu genel bakış sayfası, diğer kişisel finans araçlarının seçilmiş bir koleksiyonunun açık kaynak alternatifiGhostfolio ile karşılaştırmasını sunmaktadır.. Şeffaflığa, veri gizliliğine ve topluluk işbirliğine değer veriyorsanız Ghostfolio, finansal yönetiminizin kontrolünü ele almak için mükemmel Şeffaflığa, veri gizliliğine ve topluluk işbirliğine değer veriyorsanız Ghostfolio, finansal yönetiminizin kontrolünü ele almak için mükemmel bir fırsat sunuyor. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Aşağıdaki bağlantıları keşfedin, çeşitli kişisel finans araçlarını Ghostfolio ile karşılaştırın. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - için Açık Kaynak Alternatifi - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - The Open Source Alternative to - Açık Kaynak Alternatifi - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - ? yerine Açık Kaynak Kodlu bir alternatif mi arıyorsunuz? Ghostfolio,kullanıcılara yatırımlarını izlemek, analiz ve optimize etmek için kapsamlı bir platform sunan güçlü bir portföy yönetim aracıdır. Deneyimli bir yatırımcı da olsanuz henüz başlamış da olsanız, Ghostfolio sezgileri güçlü bir kullanıcı arayüzü ile geniş spektrumlu bir fonksiyon seti sunarak bilgiye dayalı kararlar vermenizi ve finansal geleceğinizin kontrolünü elinize almanızı sağlar. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio, karşısında açık kaynak kodlu maliyet etkin bir seçenek sunmaktadır. gibi kısıtlı bütçeye sahip, finansal özgürlük ve erken emeklilik (FIRE) amaçlayan kulanıcılar için özellikle uygundur. Ghostfolio, topluluk içindeki geliştiricilerin ve kişisel finans meraklılarının kolektif çabası sayesinde yeteneklerini, güvenliğini ve kullanıcı deneyimini sürekli olarak geliştirmektedir. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Ghostfolio ve arasındaki ayrıntılı karşılaştırmanın yer aldığı aşağıdaki tabloya daha yakından bakarak Ghostfolio'nun karşısında kendisini nasıl konumlandırdığını kapsamlı bir şekilde değerlendirelim. Bu kapsamda özellikler, veri güvenliği, fiyat vb. hususları inceleyerek kişisel gereksinimleriniz için bilgiye dayalı bir seçim yapmanızı sağlayabileceği. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - Founded - Kuruluş - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - - Origin - Köken - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - - Region - Bölge - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - Mevcut - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ Evet - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ Hayır - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ Hayır - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - Tarafınızca Barındırma - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - Anonim olarak kullan - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - Ücretsiz Plan - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Notes - Notlar - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 - - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - Lütfen dikkat, Ghostfolio ve arasındaki karşılaştırmanın yer aldığı tablodaki bilgiler bağımsız araştırmalarımıza dayanmaktadır. Websitemizin ile ya da bu karşılaştırmada adı geçen herhangi bir ürün ve hizmet ile ilişkisi bulunmamaktadır. Kişisel finans araçlarının kapsamı geliştikçe, belirli ayrıntıların veya değişikliklerin doğrudan ilgili ürün sayfasından doğrulanması önemlidir. Verilerin yenilenmesi mi gerekiyor? Doğru verileri sağlamamıza yardımcı olmak için sayfamızı ziyaret edin. GitHub. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - - - - Ready to take your investments to the next level? - Ready to take your investments to the next level? - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 - - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Ghostfolio ile varlıklarınızı kolaylıkla takip edin, analiz edin ve görselleştirin. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 - - - - Get Started - Başlayın - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 - - - - Personal Finance Tools - Kişisel Finans Araçları - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - - Switzerland - İsviçre - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 - - - - Global - Küresel - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 - - - - United States - Amerika Birleşik Devletleri - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 - - - - Belgium - Belçika - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 - - - - Germany - Almanya - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 - - - - Austria - Avusturya - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 - - - - Italy - İtalya - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 - - - - Netherlands - Hollanda - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 - - - - Thailand - Tayland - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 - - - - New Zealand - Yeni Zelanda - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 - - - - Czech Republic - Çekya - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 - - - - Resources - Kaynaklar - - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 13 - - - - Guides - Kılavuzlar - - apps/client/src/app/pages/resources/resources-page.html - 22 - - - - Glossary - Sözlük - - apps/client/src/app/pages/resources/resources-page.html - 92 - - - - Grant access - Erişim izni ver - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 - - - - Public - Halka açık - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - - - - My Ghostfolio - Benim Ghostfolio'm - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 - - - - Auto - Otomatik - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 - - - - Please enter your coupon code: - Lütfen kupon kodunuzu girin: - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 - - - - Could not redeem coupon code - Kupon kodu kullanılamadı - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 - - - - Coupon code has been redeemed - Kupon kodu kullanıldı - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 - - - - Reload - Yeniden Yükle - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 - - - - Do you really want to remove this sign in method? - Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 - - - - Membership - Üyelik - - libs/ui/src/lib/membership-card/membership-card.component.html - 18 - - - - Valid until - Geçerli tarih - - libs/ui/src/lib/membership-card/membership-card.component.html - 23 - - - - per year - yıllık - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 - - - apps/client/src/app/pages/pricing/pricing-page.html - 254 - - - - Try Premium - Premium'u Deneyin - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 - - - - Redeem Coupon - Kupon Kullan - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 - - - - Presenter View - Sunum Görünümü - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 7 - - - - Protection for sensitive information like absolute performances and quantity values - Gerçek performans ve miktar değerleri gibi hassas bilgilerin saklanması için - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 8 - - - - Base Currency - Temel Para Birimi - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 27 - - - - Language - Dil - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 - - - - Locale - Yerel Ayarlar - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 - - - - Date and number format - Tarih ve Sayı Formatları - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 - - - - Appearance - Görünüm - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 - - - - Auto - Otomatik - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 - - - - Light - Açık - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 - - - - Dark - Koyu - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 - - - - Distraction-free experience for turbulent times - Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 - - - - Biometric Authentication - Biyometrik Kimlik Doğrulama - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - Sign in with fingerprint - Parmak iziyle oturum aç - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 - - - - Experimental Features - Deneysel Özellikler - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 - - - - Sneak peek at upcoming functionality - Gelecek özelliklere göz atın - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 - - - - User ID - Kullanıcı Kimliği - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 45 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 - - - - Export Data - Verileri Dışa Aktar - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - Granted Access - xErişim İzni Verildi - - apps/client/src/app/components/user-account-access/user-account-access.html - 5 - - - - Oops, authentication has failed. - Hay Allah, kimlik doğrulaması başarısız oldu. - - apps/client/src/app/pages/webauthn/webauthn-page.html - 19 - - - - Try again - Yeniden dene - - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 - - - - Go back to Home Page - Ana Sayfaya Geri Dön - - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 - - - - Import Activities - İşlemleri İçe Aktar - - libs/ui/src/lib/activities-table/activities-table.component.html - 9 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 370 - - - - Import Dividends - Temettüleri İçe Aktar - - libs/ui/src/lib/activities-table/activities-table.component.html - 29 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 382 - - - - Export Activities - İşlemleri Dışa Aktar - - libs/ui/src/lib/activities-table/activities-table.component.html - 41 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 395 - - - - Export Drafts as ICS - Taslakları ICS Olarak Dışa Aktar - - libs/ui/src/lib/activities-table/activities-table.component.html - 54 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 408 - - - - Draft - Taslak - - libs/ui/src/lib/activities-table/activities-table.component.html - 144 - - - - Clone - Klonla - - libs/ui/src/lib/activities-table/activities-table.component.html - 435 - - - - Export Draft as ICS - Taslakları ICS Olarak Dışa Aktar - - libs/ui/src/lib/activities-table/activities-table.component.html - 445 - - - - Do you really want to delete this activity? - TBu işlemi silmeyi gerçekten istiyor musunuz? - - libs/ui/src/lib/activities-table/activities-table.component.ts - 226 - - - - Index - Endeks - - libs/ui/src/lib/benchmark/benchmark.component.html - 3 - - - - Change from All Time High - Tüm Zamanların En Yüksek Seviyesinden (ATH) Değişim - - libs/ui/src/lib/benchmark/benchmark.component.html - 81 - - - - from ATH - Tüm Zamanların En Yüksek Seviyesinden - - libs/ui/src/lib/benchmark/benchmark.component.html - 83 - - - - Market data provided by - Piyasa verileri tarafından sağlanmıştır - - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 - - - - Savings Rate per Month - Aylık Tasarruf Oranı - - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 - - - - Annual Interest Rate - Yıllık Faiz Oranı - - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 - - - - Retirement Date - Emeklilik Tarihi - - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 - - - - Projected Total Amount - Hesaplanan Toplam Tutar - - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 - - - - Interest - Faiz - - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 - - - libs/ui/src/lib/i18n.ts - 34 - - - - Savings - Tasarruflar - - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 - - - - Allocation - Dağılım - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 - - - - Show all - Tümünü göster - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 - - - - Account - Hesap - - libs/ui/src/lib/i18n.ts - 4 - - - - Asia-Pacific - Asya Pasifik - - libs/ui/src/lib/i18n.ts - 5 - - - - Asset Class - Varlık Sınıfı - - libs/ui/src/lib/i18n.ts - 6 - - - - Asset Sub Class - Asset Sub Class - - libs/ui/src/lib/i18n.ts - 7 - - - - Core - Core - - libs/ui/src/lib/i18n.ts - 9 - - - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - - libs/ui/src/lib/i18n.ts - 10 - - - - Switch to Ghostfolio Premium easily - Switch to Ghostfolio Premium easily - - libs/ui/src/lib/i18n.ts - 11 - - - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - - libs/ui/src/lib/i18n.ts - 12 - - - - Emergency Fund - Emergency Fund - - libs/ui/src/lib/i18n.ts - 13 - - - - Grant - Grant - - libs/ui/src/lib/i18n.ts - 14 - - - - Higher Risk - Higher Risk - - libs/ui/src/lib/i18n.ts - 15 - - - - This activity already exists. - This activity already exists. - - libs/ui/src/lib/i18n.ts - 16 - - - - Japan - Japan - - libs/ui/src/lib/i18n.ts - 17 - - - - Lower Risk - Lower Risk - - libs/ui/src/lib/i18n.ts - 18 - - - - Month - Month - - libs/ui/src/lib/i18n.ts - 19 - - - - Months - Months - - libs/ui/src/lib/i18n.ts - 20 - - - - Other - Other - - libs/ui/src/lib/i18n.ts - 21 - - - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 - - - - Preset - Preset - - libs/ui/src/lib/i18n.ts - 22 - - - - Retirement Provision - Retirement Provision - - libs/ui/src/lib/i18n.ts - 23 - - - - Satellite - Satellite - - libs/ui/src/lib/i18n.ts - 24 - - - - Symbol - Sembol - - libs/ui/src/lib/i18n.ts - 25 - - - - Tag - Etiket - - libs/ui/src/lib/i18n.ts - 26 - - - - Year - Yıl - - libs/ui/src/lib/i18n.ts - 27 - - - - Years - Yıl - - libs/ui/src/lib/i18n.ts - 28 - - - - Buy - Al - - libs/ui/src/lib/i18n.ts - 31 - - - - Valuable - Kıymet - - libs/ui/src/lib/i18n.ts - 35 - - - - Liability - Yükümlülük - - libs/ui/src/lib/i18n.ts - 36 - - - - Sell - Sat - - libs/ui/src/lib/i18n.ts - 37 - - - - Cash - Nakit - - libs/ui/src/lib/i18n.ts - 40 - - - - Commodity - Emtia - - libs/ui/src/lib/i18n.ts - 41 - - - - Equity - Menkul Kıymet - - libs/ui/src/lib/i18n.ts - 42 - - - - Fixed Income - Sabit Gelir - - libs/ui/src/lib/i18n.ts - 43 - - - - Real Estate - Gayrimenkul - - libs/ui/src/lib/i18n.ts - 45 - - - - Bond - Bono - - libs/ui/src/lib/i18n.ts - 48 - - - - Cryptocurrency - Kriptopara - - libs/ui/src/lib/i18n.ts - 49 - - - - ETF - Borsada İşlem Gören Fonlar (ETF) - - libs/ui/src/lib/i18n.ts - 50 - - - - Mutual Fund - Borsada İşlem Görmeyen Fonlar (Mutual Fund) - - libs/ui/src/lib/i18n.ts - 51 - - - - Precious Metal - Kıymetli Metaller - - libs/ui/src/lib/i18n.ts - 52 - - - - Private Equity - Özel Menkul Kıymetler - - libs/ui/src/lib/i18n.ts - 53 - - - - Stock - Hisse Senetleri - - libs/ui/src/lib/i18n.ts - 54 - - - - Africa - Afrika - - libs/ui/src/lib/i18n.ts - 61 - - - - Asia - Asya - - libs/ui/src/lib/i18n.ts - 62 - - - - Europe - Avrupa - - libs/ui/src/lib/i18n.ts - 63 - - - - North America - Kuzey Amerika - - libs/ui/src/lib/i18n.ts - 64 - - - - Oceania - Okyanusya - - libs/ui/src/lib/i18n.ts - 65 - - - - South America - Güney Amerika - - libs/ui/src/lib/i18n.ts - 66 - - - - Time to add your first activity. - İlk işleminizi girmanin tam zamanı. - - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 - - - - No data available - Veri mevcut değil - - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 - - - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 - - - - You are using the Live Demo. - Canlı demoyu kullanmaktasınız. - - apps/client/src/app/app.component.html - 17 - - - - Interest - Faiz - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - (Last 24 hours) - (Son 24 saat) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - (Last 30 days) - (Son 30 gün) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - (Last 90 days) - (Son 90 gün) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - One-time fee, annual account fees - Tek seferlik ücret, yıllık hesap ücreti - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - Şirket gelirinin dağıtımı - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Revenue for lending out money - Borç verme getirisi - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Oops! Could not get the historical exchange rate from - Hay Allah! Tarihsel kur verisi elde edilemedi - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Choose or drop a file here - Dosya seçin ya da sürükleyin - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - Fee - Ücret - - libs/ui/src/lib/i18n.ts - 33 - - - - Add Tag - Etiket Ekleyiniz - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - Bu etiketi silmeyi gerçekten istiyor musunuz? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - Etiketi güncelle - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - Etiket ekle - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - France - Fransa - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray, portföyünüzdeki potansiyel sorunlar ve riskleri belirlemek için statik analiz yöntemleri uygulamaktadır. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - Kur Kümelenme Riskleri (Currency Cluster Risks) - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - Hesap Kümelenme Riski (Account Cluster Risks) - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Transfer Cash Balance - Nakit Bakiyesini Transfer Et - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Benchmark - Kıyaslama - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 - - - - Version - Versiyon - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - Settings - Ayarlar - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - From - Başlangıç - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - Bitiş - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 - - - - Transfer - Transfer - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 - - - - Finland - Finlandiya - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 - - - - Membership - Üyelik - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 - - - - Access - Erişim - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 - - - - Find holding... - Sahip olunan varlıkları bul... - - libs/ui/src/lib/assistant/assistant.component.ts - 138 - - - - No entries... - Girdi yok... - - libs/ui/src/lib/assistant/assistant.html - 63 - - - libs/ui/src/lib/assistant/assistant.html - 84 - - - - Asset Profile - Varlık Profili - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 - - - - Do you really want to delete this asset profile? - Bu varlık profilini silmeyi gerçekten istiyor musunuz? - - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 - - - - Search - Arama - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Add Manually - Elle Giriş - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio, hisse senetleri, ETF’ler veya kriptopara birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans kontrol panelidir. - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - Last All Time High - Son, ATH - - libs/ui/src/lib/benchmark/benchmark.component.html - 65 - - - - User - Kullanıcı - - apps/client/src/app/components/admin-users/admin-users.html - 29 - - - - Ghostfolio vs comparison table - Ghostfolio ve karşılatırma tablosu - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - - Canada - Kanada - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 - - - - Open Source Wealth Management Software - Açık Kaynak Varlık Yönetim Yazılımı - - apps/client/src/app/pages/i18n/i18n-page.html - 14 - - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, varlık, kriptopara, kontrol paneli, etf, finans, yönetim, performans, portföy, yazılım, hisse, alım satım, varlık, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Oops, cash balance transfer has failed. - Hay Allah, Nakit bakiyesi tranferi başarısız oldu. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 - - - - Poland - Polonya - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 - - - - South Africa - Güney Afrika - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 - - - - Extreme Fear - Aşırı Korku - - libs/ui/src/lib/i18n.ts - 69 - - - - Extreme Greed - Aşırı Açgözlülük - - libs/ui/src/lib/i18n.ts - 70 - - - - Neutral - Nötr - - libs/ui/src/lib/i18n.ts - 73 - - - - Oops! Could not parse historical data. - Hay Allah! Geçmiş veriler ayrıştırılamadı. - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 - - - - Do you really want to delete this system message? - Bu sistem mesajını silmeyi gerçekten istiyor musunuz? + + per year + yıllık - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 33 - - - 50-Day Trend - 50 Günlük Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/pricing/pricing-page.html + 257 - - 200-Day Trend - 200 Günlük Trend + + Try Premium + Premium’u Deneyin - libs/ui/src/lib/benchmark/benchmark.component.html + apps/client/src/app/components/user-account-membership/user-account-membership.html 40 - - Cash Balances - Nakit Bakiyeleri + + Redeem Coupon + Kupon Kullan - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 54 - - Starting from - Başlangıç - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - + + Presenter View + Sunum Görünümü - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 + + + Protection for sensitive information like absolute performances and quantity values + Gerçek performans ve miktar değerleri gibi hassas bilgilerin saklanması için - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 + + + Base Currency + Temel Para Birimi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 + + + Language + Dil - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 + + + Locale + Yerel Ayarlar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 + + + Date and number format + Tarih ve Sayı Formatları - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 + + + Appearance + Görünüm - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 148 + + + Auto + Otomatik - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 162 + + + Light + Açık - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 163 + + + Dark + Koyu - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 164 + + + Distraction-free experience for turbulent times + Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 174 + + + Biometric Authentication + Biyometrik Kimlik Doğrulama - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + apps/client/src/app/components/user-account-settings/user-account-settings.html 190 + + + Sign in with fingerprint + Parmak iziyle oturum aç - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 + + + Experimental Features + Deneysel Özellikler - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 207 + + + Sneak peek at upcoming functionality + Gelecek özelliklere göz atın - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 208 + + + User ID + Kullanıcı Kimliği - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 224 + + + Export Data + Verileri Dışa Aktar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 + + + Granted Access + xErişim İzni Verildi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 + + + Oops, authentication has failed. + Hay Allah, kimlik doğrulaması başarısız oldu. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 + + + Try again + Yeniden dene - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 + + + Go back to Home Page + Ana Sayfaya Geri Dön - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/webauthn/webauthn-page.html + 31 + + + Import Activities + İşlemleri İçe Aktar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 370 + + + Import Dividends + Temettüleri İçe Aktar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 382 + + + Export Activities + İşlemleri Dışa Aktar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 395 + + + Export Drafts as ICS + Taslakları ICS Olarak Dışa Aktar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 408 + + + Draft + Taslak - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 144 + + + Clone + Klonla - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 435 + + + Export Draft as ICS + Taslakları ICS Olarak Dışa Aktar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.html + 445 + + + Do you really want to delete this activity? + TBu işlemi silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/activities-table/activities-table.component.ts + 235 + + + Index + Endeks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/benchmark/benchmark.component.html + 3 + + + Change from All Time High + Tüm Zamanların En Yüksek Seviyesinden (ATH) Değişim - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/benchmark/benchmark.component.html + 81 + + + from ATH + Tüm Zamanların En Yüksek Seviyesinden - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + Market data provided by + Piyasa verileri tarafından sağlanmıştır - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month + Aylık Tasarruf Oranı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate + Yıllık Faiz Oranı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + Retirement Date + Emeklilik Tarihi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount + Hesaplanan Toplam Tutar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 + + + Interest + Faiz - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 371 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 37 + + + Savings + Tasarruflar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 381 + + + Allocation + Dağılım - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 + + + Show all + Tümünü göster - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 + + + Account + Hesap - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 4 + + + Asia-Pacific + Asya Pasifik - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class + Varlık Sınıfı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 6 + + + Asset Sub Class + Asset Sub Class - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 7 + + + Core + Core - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 10 + + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Switch to Ghostfolio Premium or Ghostfolio Open Source easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 12 + + + Switch to Ghostfolio Premium easily + Switch to Ghostfolio Premium easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 13 + + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Switch to Ghostfolio Open Source or Ghostfolio Basic easily - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 14 + + + Emergency Fund + Emergency Fund - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 15 + + + Grant + Grant - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 17 + + + Higher Risk + Higher Risk - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 18 + + + This activity already exists. + This activity already exists. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 19 + + + Japan + Japan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 83 + + + Lower Risk + Lower Risk - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 20 + + + Month + Month - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 21 + + + Months + Months - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 22 + + + Other + Other - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 403 + + + Preset + Preset - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 24 + + + Retirement Provision + Retirement Provision - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 25 + + + Satellite + Satellite - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 26 + + + Symbol + Sembol - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 27 + + + Tag + Etiket - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 28 + + + Year + Yıl - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 29 + + + Years + Yıl - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 30 + + + Buy + Al - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 34 + + + Valuable + Kıymet - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 38 + + + Liability + Yükümlülük - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 39 + + + Sell + Sat - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 40 + + + Cash + Nakit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 43 + + + Commodity + Emtia - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 44 + + + Equity + Menkul Kıymet - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 45 + + + Fixed Income + Sabit Gelir - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 46 + + + Real Estate + Gayrimenkul - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 48 + + + Bond + Bono - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 51 + + + Cryptocurrency + Kriptopara - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 52 + + + ETF + Borsada İşlem Gören Fonlar (ETF) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 53 + + + Mutual Fund + Borsada İşlem Görmeyen Fonlar (Mutual Fund) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 54 + + + Precious Metal + Kıymetli Metaller - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 55 + + + Private Equity + Özel Menkul Kıymetler - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 56 + + + Stock + Hisse Senetleri - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 57 + + + Africa + Afrika - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 64 + + + Asia + Asya - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 65 + + + Europe + Avrupa - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 66 + + + North America + Kuzey Amerika - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 67 + + + Oceania + Okyanusya - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 68 + + + South America + Güney Amerika - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 69 + + + Time to add your first activity. + İlk işleminizi girmanin tam zamanı. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 + + + No data available + Veri mevcut değil - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 405 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 418 + + + You are using the Live Demo. + Canlı demoyu kullanmaktasınız. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app.component.html + 12 + + + Interest + Faiz - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + (Last 24 hours) + (Son 24 saat) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Son 30 gün) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/open/open-page.html + 59 - - year - Yıl + + (Last 90 days) + (Son 90 gün) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/open/open-page.html + 127 + + + One-time fee, annual account fees + Tek seferlik ücret, yıllık hesap ücreti - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Şirket gelirinin dağıtımı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Revenue for lending out money + Borç verme getirisi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Oops! Could not get the historical exchange rate from + Hay Allah! Tarihsel kur verisi elde edilemedi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Choose or drop a file here + Dosya seçin ya da sürükleyin - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 + + + Fee + Ücret - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 36 + + + Add Tag + Etiket Ekleyiniz - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Bu etiketi silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + Etiketi güncelle - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Etiket ekle - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray, portföyünüzdeki potansiyel sorunlar ve riskleri belirlemek için statik analiz yöntemleri uygulamaktadır. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks + Kur Kümelenme Riskleri (Currency Cluster Risks) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks + Hesap Kümelenme Riski (Account Cluster Risks) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Transfer Cash Balance + Nakit Bakiyesini Transfer Et - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Kıyaslama - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Version + Versiyon - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Ayarlar - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + Başlangıç - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + Bitiş - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Üyelik - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + Erişim - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + Find holding... + Sahip olunan varlıkları bul... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + Girdi yok... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profile + Varlık Profili - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Bu varlık profilini silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Search + Arama - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Elle Giriş - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio, hisse senetleri, ETF’ler veya kriptopara birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans kontrol panelidir. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Son, ATH - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + User + Kullanıcı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio ve karşılatırma tablosu - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Open Source Wealth Management Software + Açık Kaynak Varlık Yönetim Yazılımı - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, varlık, kriptopara, kontrol paneli, etf, finans, yönetim, performans, portföy, yazılım, hisse, alım satım, varlık, web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Hay Allah, Nakit bakiyesi tranferi başarısız oldu. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Extreme Fear + Aşırı Korku - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed + Aşırı Açgözlülük - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 95 + + + Neutral + Nötr - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/i18n.ts + 98 + + + Oops! Could not parse historical data. + Hay Allah! Geçmiş veriler ayrıştırılamadı. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Do you really want to delete this system message? + Bu sistem mesajını silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + 50-Day Trend + 50 Günlük Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200 Günlük Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Cash Balances + Nakit Bakiyeleri - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Starting from + Başlangıç - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + Yıl - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Do you really want to delete this account balance? + Bu nakit bakiyesini silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + is an invalid currency! + is an invalid currency! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + If a translation is missing, kindly support us in extending it here. + If a translation is missing, kindly support us in extending it here. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 + + + The current market price is + The current market price is - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 + + + Test + Test - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 + + + Date Range + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 93 + + + Permission + Permission - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 + + + Restricted view + Restricted view - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 + + + Oops! Could not grant access. + Oops! Could not grant access. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 + + + Private + Private - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Job Queue + Job Queue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 + + + Market data is delayed for + Market data is delayed for - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 + + + Investment + Investment - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 + + + Absolute Asset Performance + Absolute Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + Asset Performance + Asset Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 + + + Absolute Currency Performance + Absolute Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 + + + Currency Performance + Currency Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 + + + Absolute Net Performance + Absolute Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Net Performance + Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 + + + Week to date + Week to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 217 + + + Month to date + Month to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 221 + + + Year to date + Year to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + View + View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 + + + Oops! A data provider is experiencing the hiccups. + Oops! A data provider is experiencing the hiccups. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 + + + Reset Filters + Reset Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 155 + + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + years + years - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Asset Classes + Asset Classes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 138 + + + Apply Filters + Apply Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.html + 165 + + + Data Gathering + Data Gathering - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 + + + General + General - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 + + + Cloud + Cloud - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 + + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + self-hosting + self-hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 + + + FAQ + FAQ - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 + + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! It looks like you’re making too many requests. Please slow down a bit. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/core/http-response.interceptor.ts + 96 + + + My Account + My Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Active + Active - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Closed + Closed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 + + + Activity + Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 + + + Dividend Yield + Dividend Yield - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 + + + Execute Job + Execute Job - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 - - Do you really want to delete this account balance? - Bu nakit bakiyesini silmeyi gerçekten istiyor musunuz? + + Priority + Priority - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - is an invalid currency! - is an invalid currency! + + This action is not allowed. + This action is not allowed. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Liquidity + Liquidity - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + libs/ui/src/lib/i18n.ts + 47 - - The current market price is - The current market price is + + Change with currency effect + Change with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - Test - Test + + Performance with currency effect + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Date Range - Date Range + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - libs/ui/src/lib/assistant/assistant.html - 93 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Permission - Permission + + Buy and sell + Buy and sell - apps/client/src/app/components/access-table/access-table.component.html - 17 + libs/ui/src/lib/i18n.ts + 8 + + + Delete Activities + Delete Activities - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 - - Restricted view - Restricted view + + Internationalization + Internationalization - apps/client/src/app/components/access-table/access-table.component.html - 25 + apps/client/src/app/app-routing.module.ts + 79 + + + Do you really want to close your Ghostfolio account? + Do you really want to close your Ghostfolio account? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Oops! Could not grant access. - Oops! Could not grant access. + + Danger Zone + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Private - Private + + Close Account + Close Account - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Job Queue - Job Queue + + By ETF Holding + By ETF Holding - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Market data is delayed for - Market data is delayed for + + Join now or check out the example account + Join now or check out the example account - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Investment - Investment + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 + + + Show more + Show more - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 - - Absolute Asset Performance - Absolute Asset Performance + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Asset Performance - Asset Performance + + Delete Profiles + Delete Profiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 - - Absolute Currency Performance - Absolute Currency Performance + + Do you really want to delete these profiles? + Do you really want to delete these profiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Currency Performance - Currency Performance + + Oops! Could not delete profiles. + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Absolute Net Performance - Absolute Net Performance + + Table + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Net Performance - Net Performance + + Chart + Chart - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Week to date - Week to date + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/public/public-page.html + 155 - - WTD - WTD + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Month to date - Month to date + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - MTD - MTD - - libs/ui/src/lib/assistant/assistant.component.ts - 221 + + Budgeting + Budgeting + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - Year to date - Year to date + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - View - View + + Family Office + Family Office - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Investor + Investor - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Personal Finance + Personal Finance - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Reset Filters - Reset Filters + + Privacy + Privacy - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year - year + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - years - years + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Asset Classes - Asset Classes + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Apply Filters - Apply Filters + + Wealth + Wealth - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Data Gathering - Data Gathering + + Wealth Management + Wealth Management - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - General - General + + Australia + Australia - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 72 - - Cloud - Cloud + + Austria + Austria - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 73 + + + Belgium + Belgium - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 74 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 75 + + + Canada + Canada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - self-hosting - self-hosting + + Czech Republic + Czech Republic - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 77 - - FAQ - FAQ + + Finland + Finland - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 78 + + + France + France - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Germany + Germany - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 80 - - My Account - My Account + + India + India - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 81 - - Active - Active + + Italy + Italy - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 82 - - Closed - Closed + + Netherlands + Netherlands - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 84 - - Activity - Activity + + New Zealand + New Zealand - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 85 - - Dividend Yield - Dividend Yield + + Poland + Poland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 86 - - Execute Job - Execute Job + + Romania + Romania - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 87 - - Priority - Priority + + South Africa + South Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 88 - - This action is not allowed. - This action is not allowed. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 90 - - Liquidity - Liquidity + + United States + United States libs/ui/src/lib/i18n.ts - 44 + 91 - - Change with currency effect - Change with currency effect + + Error + Error - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Performance with currency effect - Performance with currency effect + + Deactivate + Deactivate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 67 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Activate + Activate - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 69 - - Buy and sell - Buy and sell + + Inactive + Inactive + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 + + + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Delete Activities + + Close + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalization + + Yes + Yes - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index c9ce15585..dbd3328a4 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -6,27 +6,27 @@ about apps/client/src/app/app.component.ts - 59 + 60 apps/client/src/app/app.component.ts - 60 + 61 apps/client/src/app/app.component.ts - 61 + 62 apps/client/src/app/app.component.ts - 63 + 64 apps/client/src/app/components/header/header.component.ts - 77 + 78 apps/client/src/app/components/header/header.component.ts - 82 + 83 apps/client/src/app/core/paths.ts @@ -78,14868 +78,6276 @@ apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 + 18 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + faq - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + apps/client/src/app/app.component.ts + 67 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 3 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 + + + features - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + license - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + privacy-policy - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + apps/client/src/app/pages/about/about-page.component.ts + 63 - - faq + + register apps/client/src/app/app.component.ts - 66 + 71 - apps/client/src/app/core/paths.ts - 3 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/resources-page.component.ts - 17 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 + + + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 - - features + + resources apps/client/src/app/app.component.ts - 67 + 72 apps/client/src/app/components/header/header.component.ts - 78 + 82 apps/client/src/app/components/header/header.component.ts - 83 + 88 apps/client/src/app/core/paths.ts - 4 + 10 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts 13 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + 14 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 14 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 14 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + You are using the Live Demo. - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 + apps/client/src/app/app.component.html + 12 + + + Create Account - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 + apps/client/src/app/app.component.html + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts + apps/client/src/app/pages/register/register-page.html 27 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 + + + Personal Finance - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 27 + apps/client/src/app/app.component.html + 54 + + + Markets - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 + apps/client/src/app/app.component.html + 58 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 380 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 + apps/client/src/app/components/home-market/home-market.html + 2 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 + apps/client/src/app/pages/resources/resources-page.html + 56 + + + Resources - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 + apps/client/src/app/app.component.html + 61 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 82 - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 283 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 + apps/client/src/app/pages/resources/resources-page.html + 4 + + + About - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 351 + + + Blog - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 + apps/client/src/app/app.component.html + 70 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 + apps/client/src/app/pages/blog/blog-page.html + 5 + + + Changelog - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 + apps/client/src/app/app.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + Features - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 + apps/client/src/app/app.component.html + 76 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 338 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 + apps/client/src/app/pages/features/features-page.html + 5 + + + Frequently Asked Questions (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 + apps/client/src/app/app.component.html + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 + apps/client/src/app/pages/about/overview/about-overview-page.html + 146 + + + License - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 + apps/client/src/app/app.component.html + 85 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 + apps/client/src/app/pages/about/license/license-page.html + 4 + + + Pricing - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 + apps/client/src/app/app.component.html + 94 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 98 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 294 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 365 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + Privacy Policy - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 + apps/client/src/app/app.component.html + 100 - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 + + + Community - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 + apps/client/src/app/app.component.html + 118 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - - - license - apps/client/src/app/app.component.ts - 61 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 83 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 88 - apps/client/src/app/pages/about/about-page.component.ts - 55 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 - - - markets - apps/client/src/app/app.component.ts - 68 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 96 - apps/client/src/app/components/header/header.component.ts - 79 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 100 - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 105 - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 + apps/client/src/app/pages/features/features-page.html + 259 + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 + apps/client/src/app/app.component.html + 199 - - pricing + + Alias - apps/client/src/app/app.component.ts - 69 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/components/header/header.component.ts - 80 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 + + + Grantee - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + Type - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - apps/client/src/app/core/http-response.interceptor.ts - 83 + libs/ui/src/lib/activities-table/activities-table.component.html + 160 + + + Details - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/components/access-table/access-table.component.html + 33 + + + Revoke - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/access-table/access-table.component.html + 62 + + + Do you really want to revoke this granted access? - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/access-table/access-table.component.ts + 56 + + + Cash Balance - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 45 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + Equity - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 56 + + + Activities - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 61 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 90 - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - - - privacy-policy - apps/client/src/app/app.component.ts - 64 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 152 - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 44 - apps/client/src/app/pages/about/about-page.component.ts - 63 + apps/client/src/app/components/admin-users/admin-users.html + 135 - - - register - apps/client/src/app/app.component.ts - 70 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 225 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Platform - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 65 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/pages/features/features-page.component.ts - 31 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + Cash Balances - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Transfer Cash Balance - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - - - resources - apps/client/src/app/app.component.ts - 71 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Name - apps/client/src/app/components/header/header.component.ts - 81 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/components/header/header.component.ts - 87 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 60 - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 228 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 30 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 30 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/pages/features/features-page.component.ts - 32 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 137 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + + + Total - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + Currency - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 235 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 144 - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 275 + + + Value - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 207 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 210 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 274 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 277 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 280 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 283 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 256 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 292 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + + + Edit - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 215 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 78 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 92 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 71 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 429 + + + Delete - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 288 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 236 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 102 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 81 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 455 + + + Do you really want to delete this account? - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 110 + + + Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Historical Market Data - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 + + + Symbol - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 44 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 46 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 36 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 305 + + + Data Source - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 127 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 154 + + + Attempts - apps/client/src/app/pages/resources/resources-page.component.ts - 19 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 81 - - You are using the Live Demo. + + Created - apps/client/src/app/app.component.html - 17 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 90 - - Create Account + + Finished - apps/client/src/app/app.component.html - 18 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 99 + + + Status - apps/client/src/app/pages/register/register-page.html - 26 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 108 + + + Delete Jobs - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 2 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 149 - - Personal Finance + + View Data - apps/client/src/app/app.component.html - 55 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 164 - - Markets + + View Stacktrace - apps/client/src/app/app.component.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 171 + + + Delete Job - apps/client/src/app/components/header/header.component.html - 386 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 177 + + + Details for - apps/client/src/app/components/home-market/home-market.html + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html 2 - - apps/client/src/app/pages/resources/resources-page.html - 56 - - - Resources + + Date - apps/client/src/app/app.component.html - 60 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 6 - apps/client/src/app/components/header/header.component.html - 80 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 160 - apps/client/src/app/components/header/header.component.html - 289 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - apps/client/src/app/pages/resources/resources-page.html - 4 + libs/ui/src/lib/activities-table/activities-table.component.html + 169 - - About + + Market Price - apps/client/src/app/app.component.html - 66 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 26 - apps/client/src/app/components/header/header.component.html - 111 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 114 + + + Cancel - apps/client/src/app/components/header/header.component.html - 357 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 46 - - - Blog - apps/client/src/app/app.component.html - 68 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 378 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 204 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 43 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 42 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html - 209 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 65 - apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 181 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html - 141 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 427 - apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html - 168 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + Save - apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html - 178 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 48 - apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 385 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 50 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html - 233 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 49 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html - 243 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html - 154 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html - 273 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 434 + + + Currencies - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html - 148 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 + + + ETFs without Countries - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html - 270 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 + + + ETFs without Sectors - apps/client/src/app/pages/blog/blog-page.html - 5 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 - - Changelog + + Do you really want to delete this asset profile? - apps/client/src/app/app.component.html - 71 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Filter by... - apps/client/src/app/pages/about/changelog/changelog-page.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 328 - - Features + + Asset Class - apps/client/src/app/app.component.html - 73 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 86 - apps/client/src/app/components/header/header.component.html - 344 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 - apps/client/src/app/pages/features/features-page.html - 5 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 245 - - - Frequently Asked Questions (FAQ) - apps/client/src/app/app.component.html - 76 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 232 - apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 354 - - License - - apps/client/src/app/app.component.html - 80 - + + Asset Sub Class - apps/client/src/app/pages/about/license/license-page.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 95 - - - Pricing - apps/client/src/app/app.component.html - 86 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 170 - apps/client/src/app/components/header/header.component.html - 98 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 258 - apps/client/src/app/components/header/header.component.html - 301 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 241 - apps/client/src/app/components/header/header.component.html + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 370 + + + First Activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 104 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 143 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 213 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 + + + Activities Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 113 + + + Historical Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 122 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 84 + + + Sectors Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 131 + + + Countries Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 140 + + + Gather Recent Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 177 + + + Gather All Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 180 + + + Gather Profile Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 183 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 45 + + + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Refresh - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + Gather Historical Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 32 + + + Import - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 110 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 + + + Sector - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 187 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 258 + + + Country - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 198 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-users/admin-users.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 268 + + + Sectors - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 329 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 274 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/public/public-page.html + 50 + + + Countries - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 340 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 286 + + + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Symbol Mapping - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 292 + + + Scraper Configuration - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 + + + Note - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 339 + + + Add Asset Profile - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 + + + Search - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Name, symbol or ISIN - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + Please add a currency: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 125 + + + is an invalid currency! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + Do you really want to delete this coupon? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 152 + + + Do you really want to delete this currency? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 165 + + + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 + + + Do you really want to flush the cache? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 202 + + + Please set your system message: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 222 + + + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + User Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 + + + Activity Count - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 + + + per User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 - - Privacy Policy + + Exchange Rates - apps/client/src/app/app.component.html - 90 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Add Currency - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html - 4 + apps/client/src/app/components/admin-overview/admin-overview.html + 104 - - Community + + User Signup - apps/client/src/app/app.component.html - 105 + apps/client/src/app/components/admin-overview/admin-overview.html + 110 + + + Read-only Mode - apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + apps/client/src/app/components/admin-overview/admin-overview.html + 124 + + + System Message - apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 + apps/client/src/app/components/admin-overview/admin-overview.html + 148 + + + Set Message - apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 + + + Coupons - apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + apps/client/src/app/components/admin-overview/admin-overview.html + 178 + + + Add - apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + apps/client/src/app/components/admin-overview/admin-overview.html + 238 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + Housekeeping - apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + apps/client/src/app/components/admin-overview/admin-overview.html + 246 + + + Flush Cache - apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + apps/client/src/app/components/admin-overview/admin-overview.html + 250 + + + Add Platform - apps/client/src/app/pages/features/features-page.html - 256 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 11 - - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + + Url - apps/client/src/app/app.component.html - 182 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 - - - Alias - apps/client/src/app/components/access-table/access-table.component.html - 3 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 51 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 - - Grantee + + Accounts - apps/client/src/app/components/access-table/access-table.component.html - 10 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 65 - - - Type - apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + apps/client/src/app/components/admin-users/admin-users.html + 114 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/components/header/header.component.html + 54 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/header/header.component.html + 255 - libs/ui/src/lib/activities-table/activities-table.component.html - 160 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 - - - Details - apps/client/src/app/components/access-table/access-table.component.html - 32 - - - - Revoke - - apps/client/src/app/components/access-table/access-table.component.html - 59 - - - - Do you really want to revoke this granted access? - - apps/client/src/app/components/access-table/access-table.component.ts - 50 - - - - Cash Balance - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 45 - - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 - - - - Equity - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 56 - - - - Activities - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 61 - - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 90 - - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 - - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 - - - apps/client/src/app/components/admin-users/admin-users.html - 134 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 - - - apps/client/src/app/pages/portfolio/activities/activities-page.html + apps/client/src/app/pages/accounts/accounts-page.html 4 - - - Platform - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 65 - - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 - - - - Cash Balances - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 - - - - Transfer Cash Balance - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 - - - - Name - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 - - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 - - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 - - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 - - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 137 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 - - - - Total - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 - - - - Currency - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 275 - - - - Value - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 - - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 - - - libs/ui/src/lib/account-balances/account-balances.component.html - 34 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 256 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 292 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + libs/ui/src/lib/assistant/assistant.html + 107 - - Edit - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 - - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 80 - - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 - - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 71 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 429 - - - - Delete - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 - - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 90 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 199 - - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 - - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 81 - - - libs/ui/src/lib/account-balances/account-balances.component.html - 80 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 455 - - - - Do you really want to delete this account? - - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 - - - - Asset Profile - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 - - - - Historical Market Data - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 - - - - Symbol - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 - - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 - - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 - - - - Data Source - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 - - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 - - - - Attempts - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 - - - - Created - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 - - - - Finished - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 - - - - Status - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 - - - - Delete Jobs - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 - - - - View Data - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 - - - - View Stacktrace - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 - - - - Delete Job - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 - - - - Details for - - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 2 - - - - Date - - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 6 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 - - - libs/ui/src/lib/account-balances/account-balances.component.html - 12 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 169 - - - - Market Price - - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 26 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 - - - - Cancel - - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 46 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 - - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 - - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 - - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 58 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 - - - - Save - - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 48 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 - - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 - - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 - - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 - - - - Currencies - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 - - - - ETFs without Countries - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 - - - - ETFs without Sectors - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 - - - - Do you really want to delete this asset profile? - - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 - - - - Filter by... - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 - - - - Asset Class - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 - - - - Asset Sub Class - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 - - - - First Activity - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 - - - - Activities Count - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 - - - - Historical Data - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 - - - - Sectors Count - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 - - - - Countries Count - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 - - - - Gather Recent Data - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 - - - - Gather All Data - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 - - - - Gather Profile Data - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - - - Oops! Could not parse historical data. - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 - - - - Refresh - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 22 - - - - Gather Historical Data - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 32 - - - - Import - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 - - - - Sector - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 - - - - Country - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 - - - apps/client/src/app/components/admin-users/admin-users.html - 77 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 - - - - Sectors - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 - - - apps/client/src/app/pages/public/public-page.html - 45 - - - - Countries - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 - - - - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 - - - - Symbol Mapping - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 - - - - Scraper Configuration - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 - - - - Note - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 - - - - Add Asset Profile - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 - - - - Search - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Add Manually - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Name, symbol or ISIN - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 - - - - Please add a currency: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 - - - - is an invalid currency! - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 - - - - Do you really want to delete this coupon? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 - - - - Do you really want to delete this currency? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 - - - - Do you really want to delete this system message? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 - - - - Do you really want to flush the cache? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 - - - - Please set your system message: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 - - - - Version - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - User Count - - apps/client/src/app/components/admin-overview/admin-overview.html - 13 - - - - Activity Count - - apps/client/src/app/components/admin-overview/admin-overview.html - 23 - - - - per User - - apps/client/src/app/components/admin-overview/admin-overview.html - 32 - - - - Exchange Rates - - apps/client/src/app/components/admin-overview/admin-overview.html - 37 - - - - Add Currency - - apps/client/src/app/components/admin-overview/admin-overview.html - 104 - - - - User Signup - - apps/client/src/app/components/admin-overview/admin-overview.html - 110 - - - - Read-only Mode - - apps/client/src/app/components/admin-overview/admin-overview.html - 123 - - - - System Message - - apps/client/src/app/components/admin-overview/admin-overview.html - 145 - - - - Set Message - - apps/client/src/app/components/admin-overview/admin-overview.html - 165 - - - - Coupons - - apps/client/src/app/components/admin-overview/admin-overview.html - 173 - - - - Add - - apps/client/src/app/components/admin-overview/admin-overview.html - 231 - - - libs/ui/src/lib/account-balances/account-balances.component.html - 93 - - - - Housekeeping - - apps/client/src/app/components/admin-overview/admin-overview.html - 238 - - - - Flush Cache - - apps/client/src/app/components/admin-overview/admin-overview.html - 242 - - - - Add Platform - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 - - - - Url - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 - - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 - - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 - - - - Accounts - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 - - - apps/client/src/app/components/admin-users/admin-users.html - 113 - - - apps/client/src/app/components/header/header.component.html - 54 - - - apps/client/src/app/components/header/header.component.html - 262 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 - - - apps/client/src/app/pages/accounts/accounts-page.html - 4 - - - libs/ui/src/lib/assistant/assistant.html - 107 - - - - Do you really want to delete this platform? - - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 - - - - Update platform - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 - - - - Add platform - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 - - - - Platforms - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 - - - - Tags - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 10 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 - - - libs/ui/src/lib/assistant/assistant.html - 127 - - - - Add Tag - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - Do you really want to delete this user? - - apps/client/src/app/components/admin-users/admin-users.component.ts - 113 - - - - User - - apps/client/src/app/components/admin-users/admin-users.html - 29 - - - - Registration - - apps/client/src/app/components/admin-users/admin-users.html - 96 - - - - Engagement per Day - - apps/client/src/app/components/admin-users/admin-users.html - 158 - - - - Last Request - - apps/client/src/app/components/admin-users/admin-users.html - 183 - - - - Impersonate User - - apps/client/src/app/components/admin-users/admin-users.html - 222 - - - - Delete User - - apps/client/src/app/components/admin-users/admin-users.html - 232 - - - - Performance - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 6 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 142 - - - - Compare with... - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 - - - - Manage Benchmarks - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 - - - - Portfolio - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 116 - - - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 41 - - - - Benchmark - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 128 - - - - Current Market Mood - - apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html - 12 - - - - Overview - - apps/client/src/app/components/header/header.component.html - 28 - - - apps/client/src/app/components/header/header.component.html - 244 - - - - Portfolio - - apps/client/src/app/components/header/header.component.html - 41 - - - apps/client/src/app/components/header/header.component.html - 254 - - - - Admin Control - - apps/client/src/app/components/header/header.component.html - 67 - - - apps/client/src/app/components/header/header.component.html - 278 - - - - Me - - apps/client/src/app/components/header/header.component.html - 211 - - - - User - - apps/client/src/app/components/header/header.component.html - 230 - - - - My Ghostfolio - - apps/client/src/app/components/header/header.component.html - 269 - - - - About Ghostfolio - - apps/client/src/app/components/header/header.component.html - 309 - - - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 - - - - Sign in - - apps/client/src/app/components/header/header.component.html - 399 - - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 71 - - - - Get started - - apps/client/src/app/components/header/header.component.html - 411 - - - - Sign in - - apps/client/src/app/app-routing.module.ts - 141 - - - apps/client/src/app/components/header/header.component.ts - 229 - - - - Oops! Incorrect Security Token. - - apps/client/src/app/components/header/header.component.ts - 243 - - - - Manage Activities - - apps/client/src/app/components/home-holdings/home-holdings.html - 32 - - - - Fear - - apps/client/src/app/components/home-market/home-market.component.ts - 25 - - - libs/ui/src/lib/i18n.ts - 71 - - - - Greed - - apps/client/src/app/components/home-market/home-market.component.ts - 26 - - - libs/ui/src/lib/i18n.ts - 72 - - - - Last Days - - apps/client/src/app/components/home-market/home-market.html - 6 - - - - Welcome to Ghostfolio - - apps/client/src/app/components/home-overview/home-overview.html - 7 - - - - Ready to take control of your personal finances? - - apps/client/src/app/components/home-overview/home-overview.html - 8 - - - - Setup your accounts - - apps/client/src/app/components/home-overview/home-overview.html - 15 - - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - - apps/client/src/app/components/home-overview/home-overview.html - 17 - - - - Capture your activities - - apps/client/src/app/components/home-overview/home-overview.html - 24 - - - - Record your investment activities to keep your portfolio up to date. - - apps/client/src/app/components/home-overview/home-overview.html - 26 - - - - Monitor and analyze your portfolio - - apps/client/src/app/components/home-overview/home-overview.html - 33 - - - - Track your progress in real-time with comprehensive analysis and insights. - - apps/client/src/app/components/home-overview/home-overview.html - 35 - - - - Setup accounts - - apps/client/src/app/components/home-overview/home-overview.html - 48 - - - - Add activity - - apps/client/src/app/components/home-overview/home-overview.html - 56 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 8 - - - - This feature requires a subscription. - - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 - - - apps/client/src/app/core/http-response.interceptor.ts - 69 - - - - Upgrade Plan - - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 - - - apps/client/src/app/core/http-response.interceptor.ts - 72 - - - - Summary - - apps/client/src/app/components/home-summary/home-summary.html - 2 - - - - Total Amount - - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 - - - - Savings Rate - - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 - - - - Security Token - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 11 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 - - - - or - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 31 - - - apps/client/src/app/pages/landing/landing-page.html - 423 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 - - - apps/client/src/app/pages/register/register-page.html - 29 - - - apps/client/src/app/pages/webauthn/webauthn-page.html - 29 - - - - Sign in with Internet Identity - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 42 - - - - Sign in with Google - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 52 - - - - Stay signed in - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 61 - - - - Time in Market - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 3 - - - - Buy - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 31 - - - - Sell - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 43 - - - - Investment - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 58 - - - - Absolute Gross Performance - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 70 - - - - Gross Performance - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 85 - - - - Fees - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 108 - - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 - - - - Absolute Net Performance - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 - - - - Net Performance - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 - - - - Total Assets - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 - - - - Valuables - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 - - - - Emergency Fund - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 - - - apps/client/src/app/pages/features/features-page.html - 89 - - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 122 - - - - Cash - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 - - - - Assets - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 - - - - Buying Power - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 - - - - Excluded from Analysis - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 - - - - Liabilities - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 - - - apps/client/src/app/pages/features/features-page.html - 102 - - - - Net Worth - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 - - - - Annualized Performance - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 - - - - Interest - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - Dividend - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 - - - apps/client/src/app/pages/features/features-page.html - 63 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 - - - - Please enter the amount of your emergency fund: - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 - - - - Change - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 119 - - - - Average Unit Price - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 - - - - Minimum Price - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 - - - - Maximum Price - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 - - - - Quantity - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 185 - - - - Report Data Glitch - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 - - - - Are you an ambitious investor who needs the full picture? - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 12 - - - - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 15 - - - - Portfolio Summary - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 22 - - - apps/client/src/app/pages/pricing/pricing-page.html - 55 - - - apps/client/src/app/pages/pricing/pricing-page.html - 199 - - - - Portfolio Allocations - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 26 - - - apps/client/src/app/pages/features/features-page.html - 160 - - - apps/client/src/app/pages/pricing/pricing-page.html - 59 - - - apps/client/src/app/pages/pricing/pricing-page.html - 203 - - - - Performance Benchmarks - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 30 - - - apps/client/src/app/pages/pricing/pricing-page.html - 63 - - - apps/client/src/app/pages/pricing/pricing-page.html - 207 - - - - FIRE Calculator - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 34 - - - apps/client/src/app/pages/pricing/pricing-page.html - 67 - - - apps/client/src/app/pages/pricing/pricing-page.html - 211 - - - - Professional Data Provider - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 38 - - - apps/client/src/app/pages/pricing/pricing-page.html - 226 - - - - and more Features... - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 42 - - - apps/client/src/app/pages/pricing/pricing-page.html - 83 - - - apps/client/src/app/pages/pricing/pricing-page.html - 231 - - - - Get the tools to effectively manage your finances and refine your personal investment strategy. - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 45 - - - - Skip - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 52 - - - - Upgrade Plan - - apps/client/src/app/components/header/header.component.html - 182 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 59 - - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 - - - apps/client/src/app/pages/pricing/pricing-page.html - 268 - - - - Today - - apps/client/src/app/components/toggle/toggle.component.ts - 22 - - - libs/ui/src/lib/assistant/assistant.component.ts - 215 - - - - YTD - - apps/client/src/app/components/toggle/toggle.component.ts - 23 - - - libs/ui/src/lib/assistant/assistant.component.ts - 225 - - - - 1Y - - apps/client/src/app/components/toggle/toggle.component.ts - 24 - - - libs/ui/src/lib/assistant/assistant.component.ts - 229 - - - - 5Y - - apps/client/src/app/components/toggle/toggle.component.ts - 25 - - - libs/ui/src/lib/assistant/assistant.component.ts - 250 - - - - Max - - apps/client/src/app/components/toggle/toggle.component.ts - 26 - - - libs/ui/src/lib/assistant/assistant.component.ts - 253 - - - - Grant access - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 - - - - Public - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - - - - Granted Access - - apps/client/src/app/components/user-account-access/user-account-access.html - 5 - - - - Please enter your coupon code: - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 - - - - Could not redeem coupon code - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 - - - - Coupon code has been redeemed - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 - - - - Reload - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 - - - - per year - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 - - - apps/client/src/app/pages/pricing/pricing-page.html - 254 - - - - Try Premium - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 - - - - Redeem Coupon - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 - - - - Auto - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 - - - - Do you really want to remove this sign in method? - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 - - - - Settings - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - Presenter View - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 7 - - - - Protection for sensitive information like absolute performances and quantity values - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 8 - - - - Base Currency - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 27 - - - - Language - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 - - - - Locale - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 - - - - Date and number format - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 - - - - Appearance - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 - - - - Auto - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 - - - - Light - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 - - - - Dark - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 - - - - Zen Mode - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 - - - apps/client/src/app/pages/features/features-page.html - 190 - - - - Distraction-free experience for turbulent times - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 - - - - Biometric Authentication - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - Sign in with fingerprint - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 - - - - Experimental Features - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 - - - - Sneak peek at upcoming functionality - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 - - - - User ID - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 45 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 - - - - Export Data - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - This feature is currently unavailable. - - apps/client/src/app/core/http-response.interceptor.ts - 60 - - - - Please try again later. - - apps/client/src/app/core/http-response.interceptor.ts - 62 - - - apps/client/src/app/core/http-response.interceptor.ts - 91 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 138 - - - - Oops! Something went wrong. - - apps/client/src/app/core/http-response.interceptor.ts - 89 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 136 - - - - Okay - - apps/client/src/app/core/http-response.interceptor.ts - 92 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 139 - - - - About - - apps/client/src/app/pages/about/about-page-routing.module.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 44 - - - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 - - - - Changelog - - apps/client/src/app/pages/about/about-page.component.ts - 49 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 - - - - License - - apps/client/src/app/pages/about/about-page.component.ts - 54 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 - - - - Privacy Policy - - apps/client/src/app/pages/about/about-page.component.ts - 62 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 - - - - Our - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Discover other exciting Open Source Software projects - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Visit - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Accounts - - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 - - - - Oops, cash balance transfer has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 - - - - Update account - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 8 - - - - Add account - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 10 - - - - Account ID - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 96 - - - - From - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 - - - - Transfer - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 - - - - Admin Control - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 - - - - Market Data - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 37 - - - - Settings - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 32 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 35 - - - - Users - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 47 - - - - Overview - - apps/client/src/app/pages/admin/admin-page.component.ts - 27 - - - apps/client/src/app/pages/home/home-page.component.ts - 37 - - - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 - - - apps/client/src/app/pages/zen/zen-page.component.ts - 34 - - - - Blog - - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 - - - - Discover the latest Ghostfolio updates and insights on personal finance - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - As you are already logged in, you cannot access the demo account. - - apps/client/src/app/pages/demo/demo-page.component.ts - 35 - - - - Frequently Asked Questions (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - - - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts - 13 - - - - Frequently Asked Questions (FAQ) - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Features - - apps/client/src/app/app-routing.module.ts - 65 - - - - Check out the numerous features of Ghostfolio to manage your wealth - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Stocks - - apps/client/src/app/pages/features/features-page.html - 15 - - - - ETFs - - apps/client/src/app/pages/features/features-page.html - 25 - - - - Bonds - - apps/client/src/app/pages/features/features-page.html - 38 - - - - Cryptocurrencies - - apps/client/src/app/pages/features/features-page.html - 51 - - - - Wealth Items - - apps/client/src/app/pages/features/features-page.html - 76 - - - - Import and Export - - apps/client/src/app/pages/features/features-page.html - 115 - - - - Multi-Accounts - - apps/client/src/app/pages/features/features-page.html - 127 - - - - Portfolio Calculations - - apps/client/src/app/pages/features/features-page.html - 141 - - - - Dark Mode - - apps/client/src/app/pages/features/features-page.html - 177 - - - - Market Mood - - apps/client/src/app/pages/features/features-page.html - 205 - - - - Static Analysis - - apps/client/src/app/pages/features/features-page.html - 224 - - - - Multi-Language - - apps/client/src/app/pages/features/features-page.html - 241 - - - - Open Source Software - - apps/client/src/app/pages/features/features-page.html - 275 - - - - Get Started - - apps/client/src/app/pages/features/features-page.html - 300 - - - apps/client/src/app/pages/public/public-page.html - 153 - - - - Holdings - - apps/client/src/app/pages/home/home-page-routing.module.ts - 23 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 42 - - - apps/client/src/app/pages/zen/zen-page.component.ts - 39 - - - - Summary - - apps/client/src/app/pages/home/home-page-routing.module.ts - 33 - - - apps/client/src/app/pages/home/home-page.component.ts - 47 - - - - Markets - - apps/client/src/app/pages/home/home-page-routing.module.ts - 38 - - - apps/client/src/app/pages/home/home-page.component.ts - 52 - - - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Open Source Wealth Management Software - - apps/client/src/app/pages/i18n/i18n-page.html - 14 - - - - Manage your wealth like a boss - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Live Demo - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Monthly Active Users - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - Stars on GitHub - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - As seen in - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Get the full picture of your personal finances across multiple platforms. - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Web3 Ready - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Get started in only 3 steps - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - Sign up anonymously* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - - apps/client/src/app/pages/open/open-page.html - 6 - - - - (Last 24 hours) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - Active Users - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - (Last 30 days) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - New Users - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - - apps/client/src/app/pages/open/open-page.html - 89 - - - - (Last 90 days) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Uptime - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Activities - - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 39 - - - - Do you really want to delete these activities? - - libs/ui/src/lib/activities-table/activities-table.component.ts - 216 - - - - Update activity - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - One-time fee, annual account fees - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Revenue for lending out money - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Mortgages, personal loans, credit cards - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Account - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 307 - - - - Update Cash Balance - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 - - - - Unit Price - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 209 - - - - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 233 - - - - Oops! Could not get the historical exchange rate from - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 - - - - Import Activities - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 - - - - Import Dividends - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 86 - - - - Importing data... - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 120 - - - - Import has been completed - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 128 - - - - Validating data... - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 - - - - Select Holding - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 20 - - - - Select File - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 - - - - Holding - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 - - - - Load Dividends - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 - - - - Choose or drop a file here - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - The following file formats are supported: - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 - - - - Select Dividends - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 - - - - Select Activities - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 - - - - Back - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 - - - - Allocations - - apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 44 - - - - Allocations - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 4 - - - - Proportion of Net Worth - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 12 - - - - By Platform - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 44 - - - - By Currency - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 63 - - - - By Asset Class - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 - - - - By Holding - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 - - - - By Sector - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 - - - - By Continent - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 - - - - By Market - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Regions - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 - - - apps/client/src/app/pages/public/public-page.html - 76 - - - - Developed Markets - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 - - - apps/client/src/app/pages/public/public-page.html - 93 - - - - Emerging Markets - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 - - - apps/client/src/app/pages/public/public-page.html - 102 - - - - Other Markets - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 - - - apps/client/src/app/pages/public/public-page.html - 111 - - - - No data available - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - By Account - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 - - - - By ETF Provider - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 - - - - By Country - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 - - - - Analysis - - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 34 - - - - Dividend - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 38 - - - libs/ui/src/lib/i18n.ts - 32 - - - - Deposit - - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 - - - - Monthly - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 50 - - - - Yearly - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 51 - - - - Analysis - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 2 - - - - Top - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 - - - - Bottom - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 - - - - Portfolio Evolution - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 - - - - Investment Timeline - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 - - - - Current Streak - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 - - - - Longest Streak - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 - - - - Dividend Timeline - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 - - - - FIRE - - apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts - 13 - - - - FIRE - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 4 - - - - Calculator - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 7 - - - - 4% Rule - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Holdings - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 77 - - - apps/client/src/app/components/home-holdings/home-holdings.html - 4 - - - apps/client/src/app/pages/public/public-page.html - 14 - - - libs/ui/src/lib/assistant/assistant.html - 46 - - - - Pricing - - apps/client/src/app/pages/pricing/pricing-page-routing.module.ts - 13 - - - - Pricing Plans - - apps/client/src/app/pages/pricing/pricing-page.html - 4 - - - - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - - apps/client/src/app/pages/pricing/pricing-page.html - 6 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - - apps/client/src/app/pages/pricing/pricing-page.html - 36 - - - - Unlimited Transactions - - apps/client/src/app/pages/pricing/pricing-page.html - 43 - - - apps/client/src/app/pages/pricing/pricing-page.html - 126 - - - apps/client/src/app/pages/pricing/pricing-page.html - 187 - - - - Unlimited Accounts - - apps/client/src/app/pages/pricing/pricing-page.html - 47 - - - apps/client/src/app/pages/pricing/pricing-page.html - 130 - - - apps/client/src/app/pages/pricing/pricing-page.html - 191 - - - - Portfolio Performance - - apps/client/src/app/pages/pricing/pricing-page.html - 51 - - - apps/client/src/app/pages/pricing/pricing-page.html - 134 - - - apps/client/src/app/pages/pricing/pricing-page.html - 195 - - - - Data Import and Export - - apps/client/src/app/pages/pricing/pricing-page.html - 71 - - - apps/client/src/app/pages/pricing/pricing-page.html - 138 - - - apps/client/src/app/pages/pricing/pricing-page.html - 215 - - - - Community Support - - apps/client/src/app/pages/pricing/pricing-page.html - 88 - - - - Self-hosted, update manually. - - apps/client/src/app/pages/pricing/pricing-page.html - 92 - - - - Free - - apps/client/src/app/pages/pricing/pricing-page.html - 93 - - - apps/client/src/app/pages/pricing/pricing-page.html - 150 - - - - For new investors who are just getting started with trading. - - apps/client/src/app/pages/pricing/pricing-page.html - 120 - - - - Fully managed Ghostfolio cloud offering. - - apps/client/src/app/pages/pricing/pricing-page.html - 149 - - - apps/client/src/app/pages/pricing/pricing-page.html - 240 - - - - For ambitious investors who need the full picture of their financial assets. - - apps/client/src/app/pages/pricing/pricing-page.html - 180 - - - - Email and Chat Support - - apps/client/src/app/pages/pricing/pricing-page.html - 236 - - - - Renew Plan - - apps/client/src/app/components/header/header.component.html - 190 - - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 - - - apps/client/src/app/pages/pricing/pricing-page.html - 276 - - - - One-time payment, no auto-renewal. - - apps/client/src/app/pages/pricing/pricing-page.html - 280 - - - - Get Started - - apps/client/src/app/pages/pricing/pricing-page.html - 291 - - - - It’s free. - - apps/client/src/app/pages/pricing/pricing-page.html - 294 - - - - Hello, has shared a Portfolio with you! - - apps/client/src/app/pages/public/public-page.html - 4 - - - - Currencies - - apps/client/src/app/pages/public/public-page.html - 30 - - - - Continents - - apps/client/src/app/pages/public/public-page.html - 60 - - - - Ghostfolio empowers you to keep track of your wealth. - - apps/client/src/app/pages/public/public-page.html - 148 - - - - Registration - - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 - - - - Continue with Internet Identity - - apps/client/src/app/pages/register/register-page.html - 41 - - - - Continue with Google - - apps/client/src/app/pages/register/register-page.html - 51 - - - - Copy to clipboard - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 - - - - Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 - - - - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - Discover Open Source Alternatives for Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - The Open Source Alternative to - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - Ghostfolio vs comparison table - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - - Founded - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - - Origin - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - - Region - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Starting from - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - + + Do you really want to delete this platform? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 86 + + + Update platform - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 + + + Add platform - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 + + + Platforms - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 + + + Tags - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 10 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 393 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 383 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/assistant/assistant.html + 127 + + + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Do you really want to delete this user? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-users/admin-users.component.ts + 125 + + + User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Registration - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-users/admin-users.html + 97 + + + Engagement per Day - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-users/admin-users.html + 157 + + + Last Request - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-users/admin-users.html + 181 + + + Impersonate User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-users/admin-users.html + 218 + + + Delete User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/admin-users/admin-users.html + 229 + + + Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 91 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 + + + Compare with... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 + + + Manage Benchmarks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 + + + Portfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 116 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 128 + + + Current Market Mood - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 + + + Overview - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 237 + + + Portfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 247 + + + Admin Control - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 68 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 271 + + + Me - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 203 + + + User - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 221 + + + My Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 262 + + + About Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 303 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + Sign in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 394 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 + + + Get started - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.html + 404 + + + Sign in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/app-routing.module.ts + 141 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 231 + + + Oops! Incorrect Security Token. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/header/header.component.ts + 246 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 + + + Manage Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-holdings/home-holdings.html + 61 + + + Fear - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-market/home-market.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 96 + + + Greed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-market/home-market.component.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + libs/ui/src/lib/i18n.ts + 97 + + + Last Days - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-market/home-market.html + 7 + + + Welcome to Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 7 + + + Ready to take control of your personal finances? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + Setup your accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + Setup accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 44 + + + Add activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-overview/home-overview.html + 52 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 8 + + + Summary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/home-summary/home-summary.html + 2 + + + Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 + + + Savings Rate - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 213 + + + Security Token - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 + + + or - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/landing/landing-page.html + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/landing/landing-page.html + 450 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/register/register-page.html + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/pages/webauthn/webauthn-page.html + 29 + + + Sign in with Internet Identity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 - - year + + Sign in with Google - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 + + + Stay signed in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 + + + Time in Market - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 + + + Buy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 + + + Sell - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 + + + Investment - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 168 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 58 + + + Absolute Gross Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 + + + Gross Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 85 + + + Fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 203 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 108 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 176 + + + Absolute Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 126 + + + Net Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 141 + + + Total Assets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 167 + + + Valuables - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 180 + + + Emergency Fund - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 192 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/features/features-page.html + 89 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 122 + + + Cash - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 226 + + + Assets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 + + + Buying Power - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 252 + + + Excluded from Analysis - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 264 + + + Liabilities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 279 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/features/features-page.html + 102 + + + Net Worth - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 297 + + + Annualized Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 309 + + + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 + + + Dividend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 343 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/features/features-page.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 201 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 271 + + + Please enter the amount of your emergency fund: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 58 + + + Change - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 65 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 119 + + + Average Unit Price - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 103 + + + Minimum Price - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 130 + + + Maximum Price - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 146 + + + Quantity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 156 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + libs/ui/src/lib/activities-table/activities-table.component.html + 185 + + + Report Data Glitch - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 448 + + + Are you an ambitious investor who needs the full picture? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 12 + + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 15 + + + Portfolio Summary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 22 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/pricing/pricing-page.html + 57 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/pricing/pricing-page.html + 203 + + + Portfolio Allocations - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/features/features-page.html + 161 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/pricing/pricing-page.html + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/pages/pricing/pricing-page.html + 207 + + + Performance Benchmarks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 65 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 211 + + + FIRE Calculator - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 34 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 69 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 215 + + + Professional Data Provider - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 38 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 230 + + + and more Features... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 235 + + + Get the tools to effectively manage your finances and refine your personal investment strategy. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 45 + + + Skip - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 52 + + + Upgrade Plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/header/header.component.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 271 + + + Today - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/toggle/toggle.component.ts + 22 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 215 + + + YTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/toggle/toggle.component.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 225 + + + 1Y - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/toggle/toggle.component.ts + 24 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 229 + + + 5Y - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/toggle/toggle.component.ts + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 250 + + + Max - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/toggle/toggle.component.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + libs/ui/src/lib/assistant/assistant.component.ts + 253 + + + Grant access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 + + + Public - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 + + + Granted Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 + + + Please enter your coupon code: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 118 + + + Could not redeem coupon code - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 + + + Coupon code has been redeemed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 140 + + + Reload - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 141 + + + per year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 33 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/pricing/pricing-page.html + 257 + + + Try Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 40 + + + Redeem Coupon - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 54 + + + Auto - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 38 + + + Do you really want to remove this sign in method? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 252 + + + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + Presenter View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 + + + Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 + + + Base Currency - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 + + + Language - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 + + + Locale - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 + + + Date and number format - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 + + + Appearance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 148 + + + Auto - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 162 + + + Light - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 163 + + + Dark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 164 + + + Zen Mode - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 173 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/features/features-page.html + 191 + + + Distraction-free experience for turbulent times - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 174 - - Notes + + Biometric Authentication - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + Sign in with fingerprint - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 + + + Experimental Features - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 207 + + + Sneak peek at upcoming functionality - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 208 + + + User ID - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 224 + + + Export Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 + + + This feature is currently unavailable. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 53 + + + Please try again later. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 138 + + + Oops! Something went wrong. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 136 + + + Okay - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 139 + + + About - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page-routing.module.ts + 51 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page.component.ts + 44 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts + 13 + + + Changelog - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page.component.ts + 49 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts + 13 + + + License - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page.component.ts + 54 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/license/license-page-routing.module.ts + 13 + + + Privacy Policy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts + 13 + + + Our - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + Discover other exciting Open Source Software projects - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + Visit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + Accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/accounts-page-routing.module.ts + 13 + + + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Update account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 + + + Add account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 10 + + + Account ID - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 96 + + + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Admin Control - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 20 + + + Market Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 + + + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 35 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page.component.ts + 32 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 35 + + + Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page.component.ts + 47 + + + Overview - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/home/home-page.component.ts + 37 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/zen/zen-page-routing.module.ts + 19 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/zen/zen-page.component.ts + 34 + + + Blog - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/blog/blog-page-routing.module.ts + 13 + + + Discover the latest Ghostfolio updates and insights on personal finance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + As you are already logged in, you cannot access the demo account. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/demo/demo-page.component.ts + 35 + + + Frequently Asked Questions (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/faq/faq-page-routing.module.ts + 34 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts + 13 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + + Frequently Asked Questions (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 + + + Features - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/app-routing.module.ts + 65 + + + Check out the numerous features of Ghostfolio to manage your wealth - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 6 + + + Stocks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 15 + + + ETFs - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 25 + + + Bonds - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 38 + + + Cryptocurrencies - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 51 + + + Wealth Items - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 76 + + + Import and Export - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 115 + + + Multi-Accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 127 + + + Portfolio Calculations - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 141 + + + Dark Mode - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 178 + + + Market Mood - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 206 + + + Static Analysis - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 225 + + + Multi-Language - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 242 + + + Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 278 + + + Get Started - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 303 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/public/public-page.html + 164 + + + Holdings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/zen/zen-page.component.ts + 39 + + + Summary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page-routing.module.ts + 33 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page.component.ts + 47 + + + Markets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page-routing.module.ts + 38 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page.component.ts + 52 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/markets/markets-page-routing.module.ts + 13 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Manage your wealth like a boss - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Live Demo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 49 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 451 + + + Monthly Active Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 70 + + + Stars on GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/open/open-page.html + 103 + + + Pulls on Docker Hub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 106 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/open/open-page.html + 117 + + + As seen in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 229 + + + 360° View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Get the full picture of your personal finances across multiple platforms. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 242 + + + Web3 Ready - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 272 - - Ready to take your investments to the next level? + + Ghostfolio is for you if you are... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 299 + + + caring about diversifying your financial resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 319 + + + What our users are saying - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Get started in only 3 steps - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 386 + + + Sign up anonymously* - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 392 + + + * no e-mail address nor credit card required - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 394 + + + Add any of your historical transactions - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 405 + + + Get valuable insights of your portfolio composition - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 417 + + + Are you ready? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 431 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 6 + + + (Last 24 hours) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 37 + + + Active Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 62 + + + (Last 30 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 59 + + + New Users - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 51 + + + Users in Slack community - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 75 + + + Contributors on GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 89 + + + (Last 90 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 127 + + + Uptime - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 132 + + + Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 39 + + + Do you really want to delete these activities? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + libs/ui/src/lib/activities-table/activities-table.component.ts + 225 + + + Update activity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 + + + Stocks, ETFs, bonds, cryptocurrencies, commodities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Mortgages, personal loans, credit cards - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + Luxury items, real estate, private companies - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + libs/ui/src/lib/activities-table/activities-table.component.html + 307 + + + Update Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 + + + Unit Price - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 213 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 286 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + libs/ui/src/lib/activities-table/activities-table.component.html + 209 + + + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 330 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + libs/ui/src/lib/activities-table/activities-table.component.html + 233 + + + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 240 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + + Import Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 45 + + + Import Dividends - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 86 + + + Importing data... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 120 + + + Import has been completed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 128 + + + Validating data... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 234 + + + Select Holding - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 + + + Select File - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 + + + Holding - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 + + + Load Dividends - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 + + + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 + + + The following file formats are supported: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 + + + Select Dividends - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 + + + Select Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 + + + Back - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 + + + Allocations - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 44 + + + Allocations - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 + + + Proportion of Net Worth - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 + + + By Platform - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 + + + By Currency - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 63 + + + By Asset Class - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 + + + By Holding - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 + + + By Sector - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 + + + By Continent - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 + + + By Market - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Regions - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 87 + + + Developed Markets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 104 + + + Emerging Markets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 231 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 113 + + + Other Markets - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 122 + + + No data available - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + By Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 + + + By ETF Provider - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 + + + By Country - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 + + + Analysis - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 34 + + + Dividend - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 38 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + libs/ui/src/lib/i18n.ts + 35 + + + Deposit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 361 + + + Monthly - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 50 + + + Yearly - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 51 + + + Analysis - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 + + + Top - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 166 + + + Bottom - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 215 + + + Portfolio Evolution - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 268 + + + Investment Timeline - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 296 + + + Current Streak - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 317 - - Get Started + + Longest Streak - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 326 + + + Dividend Timeline - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 354 + + + FIRE - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts + 13 + + + FIRE - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 4 + + + Calculator - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 + + + 4% Rule - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Holdings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/components/home-holdings/home-holdings.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + libs/ui/src/lib/assistant/assistant.html + 46 + + + Pricing - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 + + + Pricing Plans - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 4 + + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 6 + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 38 + + + Unlimited Transactions - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 129 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 191 + + + Unlimited Accounts - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 49 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 195 + + + Portfolio Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 137 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 199 + + + Data Import and Export - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 73 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 141 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 219 + + + Community Support - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 90 + + + Self-hosted, update manually. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 94 + + + Free - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 95 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 153 + + + For new investors who are just getting started with trading. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 123 + + + Fully managed Ghostfolio cloud offering. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 244 + + + For ambitious investors who need the full picture of their financial assets. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 184 + + + Email and Chat Support - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 240 + + + Renew Plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/components/header/header.component.html + 183 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 21 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 276 + + + One-time payment, no auto-renewal. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 280 + + + Get Started - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/landing/landing-page.html + 446 + + + It’s free. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 301 + + + Hello, has shared a Portfolio with you! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 4 + + + Currencies - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 32 + + + Continents - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 68 + + + Ghostfolio empowers you to keep track of your wealth. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 159 + + + Registration - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/register-page-routing.module.ts + 13 + + + Continue with Internet Identity - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/register-page.html + 42 + + + Continue with Google - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/register-page.html + 53 + + + Copy to clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 26 - - Personal Finance Tools + + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 32 + + + Agree and continue - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 45 + + + Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 14 + + + open-source-alternative-to - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Open Source Alternative to - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + Discover Open Source Alternatives for Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + Ghostfolio vs comparison table - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Founded - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 72 + + + Origin - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Notes - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Get Started - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + libs/ui/src/lib/i18n.ts + 89 + + + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + libs/ui/src/lib/i18n.ts + 16 + + + Resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 13 - - Switzerland + + Guides - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 + apps/client/src/app/pages/resources/resources-page.html + 22 + + + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Membership - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 - - Global + + Access - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + My Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 33 + + + Oops, authentication has failed. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 - - United States + + Try again - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 + + + Go back to Home Page - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 + apps/client/src/app/pages/webauthn/webauthn-page.html + 31 + + + Do you really want to delete this account balance? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + Import Activities - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + libs/ui/src/lib/activities-table/activities-table.component.html + 370 + + + Import Dividends - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + libs/ui/src/lib/activities-table/activities-table.component.html + 382 + + + Export Activities - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 + libs/ui/src/lib/activities-table/activities-table.component.html + 395 + + + Export Drafts as ICS - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 + libs/ui/src/lib/activities-table/activities-table.component.html + 408 + + + Draft - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 + libs/ui/src/lib/activities-table/activities-table.component.html + 144 + + + Clone - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 + libs/ui/src/lib/activities-table/activities-table.component.html + 435 + + + Export Draft as ICS - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 + libs/ui/src/lib/activities-table/activities-table.component.html + 445 + + + Do you really want to delete this activity? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 + libs/ui/src/lib/activities-table/activities-table.component.ts + 235 + + + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profiles - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 + libs/ui/src/lib/assistant/assistant.html + 67 + + + Index - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 + libs/ui/src/lib/benchmark/benchmark.component.html + 3 + + + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - France + + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 + + + Change from All Time High - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 + libs/ui/src/lib/benchmark/benchmark.component.html + 81 - - Poland + + from ATH - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 - - Germany + + Market data provided by - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + Retirement Date - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 + + + Interest - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 371 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 + libs/ui/src/lib/i18n.ts + 37 + + + Savings - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 381 - - Belgium + + Allocation - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - - - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 - - Austria + + Show all - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 - - Italy + + Account - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 + libs/ui/src/lib/i18n.ts + 4 - - Netherlands + + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 + libs/ui/src/lib/i18n.ts + 5 - - Thailand + + Asset Class - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 + libs/ui/src/lib/i18n.ts + 6 - - New Zealand + + Asset Sub Class - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + libs/ui/src/lib/i18n.ts + 7 - - Czech Republic + + Core - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 + libs/ui/src/lib/i18n.ts + 10 + + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 + libs/ui/src/lib/i18n.ts + 12 + + + Switch to Ghostfolio Premium easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 + libs/ui/src/lib/i18n.ts + 13 - - Finland + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 + libs/ui/src/lib/i18n.ts + 14 - - Canada + + Emergency Fund - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 + libs/ui/src/lib/i18n.ts + 15 - - Resources + + Grant - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 17 - - Guides + + Higher Risk - apps/client/src/app/pages/resources/resources-page.html - 22 + libs/ui/src/lib/i18n.ts + 18 - - Glossary + + This activity already exists. - apps/client/src/app/pages/resources/resources-page.html - 92 + libs/ui/src/lib/i18n.ts + 19 - - Membership + + Japan - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + libs/ui/src/lib/i18n.ts + 83 + + + Lower Risk - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 + libs/ui/src/lib/i18n.ts + 20 - - Access + + Month - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + libs/ui/src/lib/i18n.ts + 21 + + + Months - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 + libs/ui/src/lib/i18n.ts + 22 - - My Ghostfolio + + Other - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + libs/ui/src/lib/i18n.ts + 23 - - - Oops, authentication has failed. - apps/client/src/app/pages/webauthn/webauthn-page.html - 19 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 403 - - Try again + + Preset - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 + libs/ui/src/lib/i18n.ts + 24 - - Go back to Home Page + + Retirement Provision - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + libs/ui/src/lib/i18n.ts + 25 - - Do you really want to delete this account balance? + + Satellite - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + libs/ui/src/lib/i18n.ts + 26 - - Import Activities + + Symbol - libs/ui/src/lib/activities-table/activities-table.component.html - 9 + libs/ui/src/lib/i18n.ts + 27 + + + Tag - libs/ui/src/lib/activities-table/activities-table.component.html - 370 + libs/ui/src/lib/i18n.ts + 28 - - Import Dividends + + Year - libs/ui/src/lib/activities-table/activities-table.component.html + libs/ui/src/lib/i18n.ts 29 + + + Years - libs/ui/src/lib/activities-table/activities-table.component.html - 382 + libs/ui/src/lib/i18n.ts + 30 - - Export Activities + + Buy - libs/ui/src/lib/activities-table/activities-table.component.html - 41 + libs/ui/src/lib/i18n.ts + 34 + + + Fee - libs/ui/src/lib/activities-table/activities-table.component.html - 395 + libs/ui/src/lib/i18n.ts + 36 - - Export Drafts as ICS + + Valuable - libs/ui/src/lib/activities-table/activities-table.component.html - 54 + libs/ui/src/lib/i18n.ts + 38 + + + Liability - libs/ui/src/lib/activities-table/activities-table.component.html - 408 + libs/ui/src/lib/i18n.ts + 39 - - Draft + + Sell - libs/ui/src/lib/activities-table/activities-table.component.html - 144 + libs/ui/src/lib/i18n.ts + 40 - - Clone + + Cash - libs/ui/src/lib/activities-table/activities-table.component.html - 435 + libs/ui/src/lib/i18n.ts + 43 - - Export Draft as ICS + + Commodity - libs/ui/src/lib/activities-table/activities-table.component.html - 445 + libs/ui/src/lib/i18n.ts + 44 - - Do you really want to delete this activity? + + Equity - libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + libs/ui/src/lib/i18n.ts + 45 - - Find holding... + + Fixed Income - libs/ui/src/lib/assistant/assistant.component.ts - 138 + libs/ui/src/lib/i18n.ts + 46 - - No entries... + + Real Estate - libs/ui/src/lib/assistant/assistant.html - 63 + libs/ui/src/lib/i18n.ts + 48 + + + Bond - libs/ui/src/lib/assistant/assistant.html - 84 + libs/ui/src/lib/i18n.ts + 51 - - Asset Profiles + + Cryptocurrency - libs/ui/src/lib/assistant/assistant.html - 67 + libs/ui/src/lib/i18n.ts + 52 - - Index + + ETF - libs/ui/src/lib/benchmark/benchmark.component.html - 3 + libs/ui/src/lib/i18n.ts + 53 - - 50-Day Trend + + Mutual Fund - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + libs/ui/src/lib/i18n.ts + 54 - - 200-Day Trend + + Precious Metal - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + libs/ui/src/lib/i18n.ts + 55 - - Last All Time High + + Private Equity - libs/ui/src/lib/benchmark/benchmark.component.html - 65 + libs/ui/src/lib/i18n.ts + 56 - - Change from All Time High + + Stock - libs/ui/src/lib/benchmark/benchmark.component.html - 81 + libs/ui/src/lib/i18n.ts + 57 - - from ATH + + Africa - libs/ui/src/lib/benchmark/benchmark.component.html - 83 + libs/ui/src/lib/i18n.ts + 64 - - Market data provided by + + Asia - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + libs/ui/src/lib/i18n.ts + 65 - - Savings Rate per Month + + Europe - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + libs/ui/src/lib/i18n.ts + 66 - - Annual Interest Rate + + North America - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/i18n.ts + 67 - - Retirement Date + + Oceania - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/i18n.ts + 68 - - Projected Total Amount + + South America - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 + libs/ui/src/lib/i18n.ts + 69 - - Interest + + Extreme Fear - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + libs/ui/src/lib/i18n.ts + 94 + + + Extreme Greed libs/ui/src/lib/i18n.ts - 34 + 95 - - Savings + + Neutral - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + libs/ui/src/lib/i18n.ts + 98 - - Allocation + + Membership - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Show all + + Valid until - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/membership-card/membership-card.component.html + 23 - - Account + + Time to add your first activity. - libs/ui/src/lib/i18n.ts - 4 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - Asia-Pacific + + No data available - libs/ui/src/lib/i18n.ts - 5 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 405 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 418 - - Asset Class + + If a translation is missing, kindly support us in extending it here. - libs/ui/src/lib/i18n.ts - 6 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 - - Asset Sub Class + + Date Range - libs/ui/src/lib/i18n.ts - 7 + libs/ui/src/lib/assistant/assistant.html + 93 - - Core + + The current market price is - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily + + Test - libs/ui/src/lib/i18n.ts - 10 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 - - Switch to Ghostfolio Premium easily + + Oops! Could not grant access. - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily + + Restricted view - libs/ui/src/lib/i18n.ts - 12 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Emergency Fund - libs/ui/src/lib/i18n.ts - 13 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - Grant + + Permission - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/components/access-table/access-table.component.html + 18 - - - Higher Risk - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 - - This activity already exists. + + Private - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Japan + + Job Queue - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - - - Lower Risk - libs/ui/src/lib/i18n.ts - 18 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 - - Month + + Market data is delayed for - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 - - Months + + Absolute Currency Performance - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 - - Other + + Absolute Net Performance - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 + + + Absolute Asset Performance - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 - - Preset + + Investment - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 - - - Retirement Provision - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Satellite - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 - - Symbol + + Asset Performance - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 - - Tag + + Net Performance - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 - - Year + + Currency Performance - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 - - Years + + Year to date - libs/ui/src/lib/i18n.ts - 28 + libs/ui/src/lib/assistant/assistant.component.ts + 225 - - Buy + + Week to date - libs/ui/src/lib/i18n.ts - 31 + libs/ui/src/lib/assistant/assistant.component.ts + 217 - - Fee + + Month to date - libs/ui/src/lib/i18n.ts - 33 + libs/ui/src/lib/assistant/assistant.component.ts + 221 - - Valuable + + MTD - libs/ui/src/lib/i18n.ts - 35 + libs/ui/src/lib/assistant/assistant.component.ts + 221 - - Liability + + WTD - libs/ui/src/lib/i18n.ts - 36 + libs/ui/src/lib/assistant/assistant.component.ts + 217 - - Sell + + Oops! A data provider is experiencing the hiccups. - libs/ui/src/lib/i18n.ts - 37 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Cash + + View - libs/ui/src/lib/i18n.ts - 40 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - Commodity - libs/ui/src/lib/i18n.ts - 41 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 - - Equity + + Reset Filters - libs/ui/src/lib/i18n.ts - 42 + libs/ui/src/lib/assistant/assistant.html + 155 - - Fixed Income + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - libs/ui/src/lib/i18n.ts - 43 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Real Estate + + year - libs/ui/src/lib/i18n.ts - 45 + libs/ui/src/lib/assistant/assistant.component.ts + 229 - - Bond + + years - libs/ui/src/lib/i18n.ts - 48 + libs/ui/src/lib/assistant/assistant.component.ts + 250 - - Cryptocurrency + + Apply Filters - libs/ui/src/lib/i18n.ts - 49 + libs/ui/src/lib/assistant/assistant.html + 165 - - ETF + + Asset Classes - libs/ui/src/lib/i18n.ts - 50 + libs/ui/src/lib/assistant/assistant.html + 138 - - Mutual Fund + + self-hosting - libs/ui/src/lib/i18n.ts - 51 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - - Precious Metal + + FAQ - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - - - Private Equity - libs/ui/src/lib/i18n.ts - 53 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 - - Stock + + Self-Hosting - libs/ui/src/lib/i18n.ts - 54 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - - - Africa - libs/ui/src/lib/i18n.ts - 61 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 - - Asia + + Data Gathering - libs/ui/src/lib/i18n.ts - 62 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 - - Europe + + General - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 - - North America + + Cloud - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 - - - Oceania - libs/ui/src/lib/i18n.ts - 65 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - - South America + + Oops! It looks like you’re making too many requests. Please slow down a bit. - libs/ui/src/lib/i18n.ts - 66 + apps/client/src/app/core/http-response.interceptor.ts + 96 - - Extreme Fear + + My Account - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Extreme Greed + + Closed - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 - - Neutral + + Active - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Membership + + Activity - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 - - Valid until + + Dividend Yield - libs/ui/src/lib/membership-card/membership-card.component.html - 23 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 - - Time to add your first activity. + + Execute Job - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 - - No data available + + This action is not allowed. - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + apps/client/src/app/core/http-response.interceptor.ts + 61 + + + Priority - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 - - If a translation is missing, kindly support us in extending it here. + + Liquidity - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + libs/ui/src/lib/i18n.ts + 47 - - Date Range + + Change with currency effect - libs/ui/src/lib/assistant/assistant.html - 93 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - The current market price is + + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Test + + Buy and sell - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + libs/ui/src/lib/i18n.ts + 8 - - Oops! Could not grant access. + + {VAR_PLURAL, plural, =1 {activity} other {activities}} - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Restricted view + + Delete Activities - apps/client/src/app/components/access-table/access-table.component.html - 25 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 + + + Internationalization - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/app-routing.module.ts + 79 - - Permission + + Close Account - apps/client/src/app/components/access-table/access-table.component.html - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 + + + Do you really want to close your Ghostfolio account? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Private + + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Job Queue + + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 + + + By ETF Holding - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Market data is delayed for + + Join now or check out the example account - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Absolute Currency Performance + + Oops! There was an error setting up biometric authentication. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 - - Absolute Net Performance + + Show more - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 - - Absolute Asset Performance + + Do you really want to delete these profiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Investment + + Delete Profiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 + + + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Asset Performance + + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Net Performance + + Chart - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Currency Performance + + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Year to date + + Would you like to refine your personal investment strategy? - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/public/public-page.html + 155 - - Week to date + + Wealth - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - Month to date + + Community - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - MTD + + Thailand - libs/ui/src/lib/assistant/assistant.component.ts - 221 + libs/ui/src/lib/i18n.ts + 90 - - WTD + + India - libs/ui/src/lib/assistant/assistant.component.ts - 217 + libs/ui/src/lib/i18n.ts + 81 - - Oops! A data provider is experiencing the hiccups. + + Austria - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + libs/ui/src/lib/i18n.ts + 73 - - View + + Poland - apps/client/src/app/components/access-table/access-table.component.html - 22 + libs/ui/src/lib/i18n.ts + 86 + + + Italy - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + libs/ui/src/lib/i18n.ts + 82 - - Reset Filters + + User Experience - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + App - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - year + + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - years + + Investor - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Apply Filters + + Wealth Management - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - Asset Classes + + Canada - libs/ui/src/lib/assistant/assistant.html - 138 + libs/ui/src/lib/i18n.ts + 76 - - self-hosting + + New Zealand - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 85 - - FAQ + + Netherlands - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 84 + + + Alternative - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Self-Hosting + + Family Office - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Personal Finance - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Data Gathering + + Software - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - General + + Romania - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 87 - - Cloud + + Germany - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 80 + + + United States - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 91 - - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Budgeting - apps/client/src/app/core/http-response.interceptor.ts - 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - My Account + + Belgium - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 74 - - Closed + + Open Source - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Active + + Czech Republic - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 77 - - Activity + + Australia - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 72 - - Dividend Yield + + South Africa - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 88 - - Execute Job + + Bulgaria - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 75 - - This action is not allowed. + + Privacy - apps/client/src/app/core/http-response.interceptor.ts - 70 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Priority + + Finland - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 78 - - Liquidity + + France libs/ui/src/lib/i18n.ts - 44 + 79 - - Change with currency effect + + Error - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Performance with currency effect + + Cancel - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + libs/ui/src/lib/i18n.ts + 9 - - Buy and sell + + Yes libs/ui/src/lib/i18n.ts - 8 + 31 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Inactive - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 - - Delete Activities + + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization + + Activate - apps/client/src/app/app-routing.module.ts - 79 + apps/client/src/app/components/rule/rule.component.html + 69 + + + + Deactivate + + apps/client/src/app/components/rule/rule.component.html + 67 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index cd9adee11..96bffe2d8 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -7,27 +7,27 @@ 关于 apps/client/src/app/app.component.ts - 59 + 60 apps/client/src/app/app.component.ts - 60 + 61 apps/client/src/app/app.component.ts - 61 + 62 apps/client/src/app/app.component.ts - 63 + 64 apps/client/src/app/components/header/header.component.ts - 77 + 78 apps/client/src/app/components/header/header.component.ts - 82 + 83 apps/client/src/app/core/paths.ts @@ -79,15499 +79,6943 @@ apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 26 + 18 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 24 + + + faq + 常见问题 - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + apps/client/src/app/app.component.ts + 67 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 3 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 19 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 37 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + apps/client/src/app/pages/resources/resources-page.component.ts + 17 + + + features + 功能 - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + apps/client/src/app/app.component.ts + 68 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 79 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 84 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 4 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + apps/client/src/app/pages/about/overview/about-overview-page.component.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + apps/client/src/app/pages/pricing/pricing-page.component.ts + 36 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 25 + + + license + 许可 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + apps/client/src/app/app.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 5 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + apps/client/src/app/pages/about/about-page.component.ts + 55 + + + markets + 市场 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + apps/client/src/app/app.component.ts + 69 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 85 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 6 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 14 + + + pricing + 价钱 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + apps/client/src/app/app.component.ts + 70 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + apps/client/src/app/components/header/header.component.ts + 86 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 39 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + apps/client/src/app/core/http-response.interceptor.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 7 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + 14 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 26 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + 16 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 26 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + libs/ui/src/lib/membership-card/membership-card.component.ts + 25 + + + privacy-policy + 隐私政策 - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + apps/client/src/app/app.component.ts + 65 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + apps/client/src/app/core/paths.ts + 8 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + apps/client/src/app/pages/about/about-page.component.ts + 63 - - faq - 常见问题 + + register + 注册 apps/client/src/app/app.component.ts - 66 + 71 - apps/client/src/app/core/paths.ts - 3 + apps/client/src/app/components/header/header.component.ts + 87 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 19 + apps/client/src/app/core/auth.guard.ts + 55 - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + apps/client/src/app/core/paths.ts + 9 - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + apps/client/src/app/pages/faq/saas/saas-page.component.ts + 16 - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/pages/features/features-page.component.ts + 29 - apps/client/src/app/pages/resources/resources-page.component.ts - 17 + apps/client/src/app/pages/landing/landing-page.component.ts + 27 + + + apps/client/src/app/pages/pricing/pricing-page.component.ts + 37 - - features - 功能 + + resources + 资源 apps/client/src/app/app.component.ts - 67 + 72 apps/client/src/app/components/header/header.component.ts - 78 + 82 apps/client/src/app/components/header/header.component.ts - 83 + 88 apps/client/src/app/core/paths.ts - 4 + 10 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts + 14 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts 13 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 15 + 14 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + apps/client/src/app/pages/features/features-page.component.ts + 30 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 27 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 35 + apps/client/src/app/pages/resources/resources-page.component.ts + 19 + + + You are using the Live Demo. + 您正在使用现场演示。 - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 27 + apps/client/src/app/app.component.html + 12 + + + Create Account + 创建账户 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 27 + apps/client/src/app/app.component.html + 13 - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts + apps/client/src/app/pages/register/register-page.html 27 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 27 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 + + + Personal Finance + 个人财务 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 27 + apps/client/src/app/app.component.html + 54 + + + Markets + 市场 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 27 + apps/client/src/app/app.component.html + 58 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 380 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 27 + apps/client/src/app/components/home-market/home-market.html + 2 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 27 + apps/client/src/app/pages/resources/resources-page.html + 56 + + + Resources + 资源 - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 27 + apps/client/src/app/app.component.html + 61 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 82 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 283 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 27 + apps/client/src/app/pages/resources/resources-page.html + 4 + + + About + 关于 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 27 + apps/client/src/app/app.component.html + 67 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 112 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 351 + + + Blog + 博客 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 27 + apps/client/src/app/app.component.html + 70 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 27 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 27 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 27 + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 181 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 27 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 27 + apps/client/src/app/pages/blog/blog-page.html + 5 + + + Changelog + 变更日志 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 27 + apps/client/src/app/app.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 27 + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + Features + 功能 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 27 + apps/client/src/app/app.component.html + 76 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 338 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 27 + apps/client/src/app/pages/features/features-page.html + 5 + + + Frequently Asked Questions (FAQ) + 常见问题 (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 27 + apps/client/src/app/app.component.html + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 27 + apps/client/src/app/pages/about/overview/about-overview-page.html + 146 + + + License + 许可 - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 27 + apps/client/src/app/app.component.html + 85 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 27 + apps/client/src/app/pages/about/license/license-page.html + 4 + + + Pricing + 价钱 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 27 + apps/client/src/app/app.component.html + 94 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 98 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 294 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 27 + apps/client/src/app/components/header/header.component.html + 365 - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + Privacy Policy + 隐私政策 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 27 + apps/client/src/app/app.component.html + 100 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 27 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 - - license - 许可 + + Community + 社区 - apps/client/src/app/app.component.ts - 61 + apps/client/src/app/app.component.html + 118 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/about/about-page.component.ts - 55 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 83 - - - markets - 市场 - apps/client/src/app/app.component.ts - 68 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 88 - apps/client/src/app/components/header/header.component.ts - 79 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/core/paths.ts - 6 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 96 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 16 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 100 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 14 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 105 - - - pricing - 价钱 - apps/client/src/app/app.component.ts - 69 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 - apps/client/src/app/components/header/header.component.ts - 80 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/pages/features/features-page.html + 259 + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + 交易损失的风险可能很大。不建议将短期内可能需要的资金进行投资。 - apps/client/src/app/components/home-summary/home-summary.component.ts - 125 + apps/client/src/app/app.component.html + 199 + + + Alias + 别名 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 14 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 38 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 + + + Grantee + 受赠者 - apps/client/src/app/core/http-response.interceptor.ts - 83 + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + Type + 类型 - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 13 + libs/ui/src/lib/activities-table/activities-table.component.html + 160 + + + Details + 细节 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 14 + apps/client/src/app/components/access-table/access-table.component.html + 33 + + + Revoke + 撤销 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 16 + apps/client/src/app/components/access-table/access-table.component.html + 62 + + + Do you really want to revoke this granted access? + 您真的要撤销此授予的访问权限吗? - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 14 + apps/client/src/app/components/access-table/access-table.component.ts + 56 + + + Cash Balance + 现金余额 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 16 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 45 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 15 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - libs/ui/src/lib/membership-card/membership-card.component.ts - 25 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 - - privacy-policy - 隐私政策 + + Equity + 公平 - apps/client/src/app/app.component.ts - 64 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 56 + + + Activities + 活动 - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 61 - apps/client/src/app/pages/about/about-page.component.ts - 63 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 90 - - - register - 注册 - apps/client/src/app/app.component.ts - 70 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 152 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 44 - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 16 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 225 - apps/client/src/app/pages/features/features-page.component.ts - 31 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Platform + 平台 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 36 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 65 - - - resources - 资源 - apps/client/src/app/app.component.ts - 71 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/components/header/header.component.ts - 81 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + Cash Balances + 现金余额 - apps/client/src/app/components/header/header.component.ts - 87 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 122 + + + Transfer Cash Balance + 转移现金余额 - apps/client/src/app/core/paths.ts + apps/client/src/app/components/accounts-table/accounts-table.component.html 10 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 14 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Name + 名称 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 14 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 13 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 60 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 228 - apps/client/src/app/pages/features/features-page.component.ts - 32 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 30 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 30 - apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 29 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 29 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 137 - apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 29 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 29 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 12 + + + Total + 全部的 - apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + Currency + 货币 - apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 235 - apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 29 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 144 - apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 275 + + + Value + 价值 - apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 29 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 207 - apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 210 - apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 274 - apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 277 - apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 280 - apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 29 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 283 - apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 256 - apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 292 - apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 29 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 29 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 26 + + + Edit + 编辑 - apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 215 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 78 - apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts - 29 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 92 - apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 71 - apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 429 + + + Delete + 删除 - apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 288 - apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 236 - apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 29 + apps/client/src/app/components/admin-overview/admin-overview.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts - 29 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 102 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 29 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 81 - apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 - apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 455 + + + Do you really want to delete this account? + 您真的要删除该帐户吗? - apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 110 + + + Asset Profile + 资产概况 - apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Historical Market Data + 历史市场数据 - apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 + + + Symbol + 符号 - apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 44 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 46 - apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 36 - apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 29 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 305 + + + Data Source + 数据源 - apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 29 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 53 - apps/client/src/app/pages/resources/resources-page.component.ts - 19 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 77 - - - You are using the Live Demo. - 您正在使用现场演示。 - apps/client/src/app/app.component.html - 17 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 127 - - - Create Account - 创建账户 - apps/client/src/app/app.component.html - 18 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 154 + + + Attempts + 尝试 - apps/client/src/app/pages/register/register-page.html - 26 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 81 + + + Created + 创建 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 2 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 90 - - Personal Finance - 个人财务 + + Finished + 完成的 - apps/client/src/app/app.component.html - 55 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 99 - - Markets - 市场 + + Status + 状况 - apps/client/src/app/app.component.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 108 + + + Delete Jobs + 删除作业 - apps/client/src/app/components/header/header.component.html - 386 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 149 + + + View Data + 查看数据 - apps/client/src/app/components/home-market/home-market.html - 2 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 164 + + + View Stacktrace + 查看堆栈跟踪 - apps/client/src/app/pages/resources/resources-page.html - 56 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 171 - - Resources - 资源 + + Delete Job + 删除作业 - apps/client/src/app/app.component.html - 60 - - - apps/client/src/app/components/header/header.component.html - 80 - - - apps/client/src/app/components/header/header.component.html - 289 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 177 + + + Details for + 详细信息 - apps/client/src/app/pages/resources/resources-page.html - 4 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 2 - - About - 关于 + + Date + 日期 - apps/client/src/app/app.component.html - 66 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 6 - apps/client/src/app/components/header/header.component.html - 111 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 160 - apps/client/src/app/components/header/header.component.html - 357 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - - - Blog - 博客 - apps/client/src/app/app.component.html - 68 + libs/ui/src/lib/activities-table/activities-table.component.html + 169 + + + Market Price + 市场价 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 204 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 26 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 183 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 114 + + + Cancel + 取消 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 183 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 46 - apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 183 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 378 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html - 209 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 43 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 195 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 42 - apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 181 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html - 141 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html - 168 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 - apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html - 178 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 65 - apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 202 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 427 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 252 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 38 + + + Save + 保存 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html - 233 + apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html + 48 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html - 243 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 385 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html - 154 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 50 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html - 273 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 49 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html - 148 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html - 270 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 - apps/client/src/app/pages/blog/blog-page.html - 5 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 434 - - Changelog - 变更日志 - - apps/client/src/app/app.component.html - 71 - + + Currencies + 货币 - apps/client/src/app/pages/about/changelog/changelog-page.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 85 - - Features - 功能 - - apps/client/src/app/app.component.html - 73 - - - apps/client/src/app/components/header/header.component.html - 344 - + + ETFs without Countries + 没有国家的 ETF - apps/client/src/app/pages/features/features-page.html - 5 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 90 - - Frequently Asked Questions (FAQ) - 常见问题 (FAQ) - - apps/client/src/app/app.component.html - 76 - + + ETFs without Sectors + 无行业类别的 ETF - apps/client/src/app/pages/about/overview/about-overview-page.html - 146 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 95 - - License - 许可 + + Do you really want to delete this asset profile? + 您确实要删除此资产配置文件吗? - apps/client/src/app/app.component.html - 80 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 33 + + + Filter by... + 过滤... - apps/client/src/app/pages/about/license/license-page.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 328 - - Pricing - 价钱 + + Asset Class + 资产类别 - apps/client/src/app/app.component.html + apps/client/src/app/components/admin-market-data/admin-market-data.html 86 - apps/client/src/app/components/header/header.component.html - 98 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 161 - apps/client/src/app/components/header/header.component.html - 301 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 245 - apps/client/src/app/components/header/header.component.html - 370 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 232 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 354 + + + Asset Sub Class + 资产子类别 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 95 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 170 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 258 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 241 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 370 + + + First Activity + 第一个活动 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 104 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 143 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 213 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 + + + Activities Count + 活动计数 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 113 + + + Historical Data + 历史数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 122 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 84 + + + Sectors Count + 行业数 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 131 + + + Countries Count + 国家数 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 140 + + + Gather Recent Data + 收集最近的数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 177 + + + Gather All Data + 收集所有数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 180 + + + Gather Profile Data + 收集个人资料数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 183 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 45 + + + Oops! Could not parse historical data. + 哎呀!无法解析历史数据。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 237 + + + Refresh + 刷新 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 22 + + + Gather Historical Data + 收集历史数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 32 + + + Import + 导入 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 110 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 + + + Sector + 行业 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 187 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 258 + + + Country + 国家 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 198 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-users/admin-users.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 268 + + + Sectors + 行业 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 329 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 274 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/public/public-page.html + 50 + + + Countries + 国家 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 340 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 286 + + + Benchmark + 基准 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 286 + + + Symbol Mapping + 符号映射 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 292 + + + Scraper Configuration + 刮削配置 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 + + + Note + 笔记 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 365 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 339 + + + Add Asset Profile + 添加资产概况 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 + + + Search + 搜索 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + 手动添加 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Name, symbol or ISIN + 名称、符号或 ISIN - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + Please add a currency: + 请添加货币: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 125 + + + is an invalid currency! + 是无效的货币! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 133 + + + Do you really want to delete this coupon? + 您确实要删除此优惠券吗? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 152 + + + Do you really want to delete this currency? + 您真的要删除该货币吗? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 165 + + + Do you really want to delete this system message? + 您真的要删除这条系统消息吗? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 188 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 178 - - Privacy Policy - 隐私政策 + + Do you really want to flush the cache? + 您真的要刷新缓存吗? - apps/client/src/app/app.component.html - 90 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 202 + + + Please set your system message: + 请设置您的系统消息: - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html - 4 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 222 - - Community - 社区 + + Version + 版本 - apps/client/src/app/app.component.html - 105 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + User Count + 用户数 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 86 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 103 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 + + + Activity Count + 活动计数 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 108 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 + + + per User + 每位用户 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 112 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 + + + Exchange Rates + 汇率 - apps/client/src/app/pages/features/features-page.html - 256 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 - - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - 交易损失的风险可能很大。不建议将短期内可能需要的资金进行投资。 + + Add Currency + 添加货币 - apps/client/src/app/app.component.html - 182 + apps/client/src/app/components/admin-overview/admin-overview.html + 104 - - Alias - 别名 + + User Signup + 用户注册 - apps/client/src/app/components/access-table/access-table.component.html - 3 + apps/client/src/app/components/admin-overview/admin-overview.html + 110 + + + Read-only Mode + 只读模式 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/admin-overview/admin-overview.html + 124 - - Grantee - 受赠者 + + System Message + 系统信息 - apps/client/src/app/components/access-table/access-table.component.html - 10 + apps/client/src/app/components/admin-overview/admin-overview.html + 148 - - Type - 类型 + + Set Message + 设置留言 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 28 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 + + + Coupons + 优惠券 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/components/admin-overview/admin-overview.html + 178 + + + Add + 添加 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/admin-overview/admin-overview.html + 238 - libs/ui/src/lib/activities-table/activities-table.component.html - 160 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 - - Details - 细节 + + Housekeeping + 家政 - apps/client/src/app/components/access-table/access-table.component.html - 32 + apps/client/src/app/components/admin-overview/admin-overview.html + 246 - - Revoke - 撤销 + + Flush Cache + 刷新缓存 - apps/client/src/app/components/access-table/access-table.component.html - 59 + apps/client/src/app/components/admin-overview/admin-overview.html + 250 - - Do you really want to revoke this granted access? - 您真的要撤销此授予的访问权限吗? + + Add Platform + 添加平台 - apps/client/src/app/components/access-table/access-table.component.ts - 50 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 11 - - Cash Balance - 现金余额 + + Url + 网址 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 45 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 117 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 51 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 - - Equity - 公平 + + Accounts + 帐户 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 56 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 65 - - - Activities - 活动 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 61 + apps/client/src/app/components/admin-users/admin-users.html + 114 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 90 + apps/client/src/app/components/header/header.component.html + 54 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 100 + apps/client/src/app/components/header/header.component.html + 255 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 150 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + apps/client/src/app/pages/accounts/accounts-page.html + 4 - apps/client/src/app/components/admin-users/admin-users.html - 134 + libs/ui/src/lib/assistant/assistant.html + 107 + + + Do you really want to delete this platform? + 您真的要删除这个平台吗? - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 221 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 86 + + + Update platform + 更新平台 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 331 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 + + + Add platform + 添加平台 - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 - - Platform + + Platforms 平台 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 65 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 + + + Tags + 标签 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 72 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 10 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 393 - - - Cash Balances - 现金余额 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 115 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 430 - - - Transfer Cash Balance - 转移现金余额 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 383 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + libs/ui/src/lib/assistant/assistant.html + 127 - - Name - 名称 - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 34 - - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 226 - + + Add Tag + 添加标签 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + 您真的要删除此标签吗? - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 12 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 86 + + + Update tag + 更新标签 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + 添加标签 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 12 + 10 + + + Do you really want to delete this user? + 您真的要删除该用户吗? - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 + apps/client/src/app/components/admin-users/admin-users.component.ts + 125 + + + User + 用户 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 134 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Registration + 注册 - libs/ui/src/lib/activities-table/activities-table.component.html - 137 + apps/client/src/app/components/admin-users/admin-users.html + 97 + + + Engagement per Day + 每天的参与度 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 + apps/client/src/app/components/admin-users/admin-users.html + 157 - - Total - 全部的 + + Last Request + 最后请求 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 45 + apps/client/src/app/components/admin-users/admin-users.html + 181 - - Currency - 货币 + + Impersonate User + 模拟用户 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + apps/client/src/app/components/admin-users/admin-users.html + 218 + + + Delete User + 删除用户 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 130 + apps/client/src/app/components/admin-users/admin-users.html + 229 + + + Performance + 表现 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 233 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 91 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 140 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 + + + Compare with... + 与之比较... - libs/ui/src/lib/activities-table/activities-table.component.html - 275 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 - - Value - 价值 + + Manage Benchmarks + 管理基准 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 152 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 + + + Portfolio + 文件夹 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 187 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 116 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 45 + apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts + 41 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 194 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + Benchmark + 基准 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 195 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 128 + + + Current Market Mood + 当前市场情绪 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 197 + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 + + + Overview + 概述 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 257 + apps/client/src/app/components/header/header.component.html + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 258 + apps/client/src/app/components/header/header.component.html + 237 + + + Portfolio + 文件夹 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + apps/client/src/app/components/header/header.component.html + 41 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 260 + apps/client/src/app/components/header/header.component.html + 247 + + + Admin Control + 管理控制 - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + apps/client/src/app/components/header/header.component.html + 68 - libs/ui/src/lib/activities-table/activities-table.component.html - 256 + apps/client/src/app/components/header/header.component.html + 271 + + + Me + - libs/ui/src/lib/activities-table/activities-table.component.html - 292 + apps/client/src/app/components/header/header.component.html + 203 + + + User + 用户 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + apps/client/src/app/components/header/header.component.html + 221 - - Edit - 编辑 + + My Ghostfolio + 我的 Ghostfolio - apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + apps/client/src/app/components/header/header.component.html + 262 + + + About Ghostfolio + 关于 Ghostfolio - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + apps/client/src/app/components/header/header.component.html + 303 - apps/client/src/app/components/admin-overview/admin-overview.html - 80 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 + + + Sign in + 登入 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 91 + apps/client/src/app/components/header/header.component.html + 394 - apps/client/src/app/components/admin-tag/admin-tag.component.html + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 71 + + + Get started + 开始使用 - libs/ui/src/lib/activities-table/activities-table.component.html - 429 + apps/client/src/app/components/header/header.component.html + 404 - - Delete - 删除 + + Sign in + 登入 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 264 + apps/client/src/app/app-routing.module.ts + 141 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 194 + apps/client/src/app/components/header/header.component.ts + 231 + + + Oops! Incorrect Security Token. + 哎呀!安全令牌不正确。 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + apps/client/src/app/components/header/header.component.ts + 246 - apps/client/src/app/components/admin-overview/admin-overview.html - 90 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 + + + Manage Activities + 管理活动 - apps/client/src/app/components/admin-overview/admin-overview.html - 199 + apps/client/src/app/components/home-holdings/home-holdings.html + 61 + + + Fear + 恐惧 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 101 + apps/client/src/app/components/home-market/home-market.component.ts + 27 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 81 + libs/ui/src/lib/i18n.ts + 96 + + + Greed + 贪婪 - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/components/home-market/home-market.component.ts + 28 - libs/ui/src/lib/activities-table/activities-table.component.html - 455 + libs/ui/src/lib/i18n.ts + 97 - - Do you really want to delete this account? - 您真的要删除该帐户吗? + + Last Days + 最后的 - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 101 + apps/client/src/app/components/home-market/home-market.html + 7 - - Asset Profile - 资产概况 + + Welcome to Ghostfolio + 欢迎来到Ghostfolio - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/home-overview/home-overview.html + 7 - - Historical Market Data - 历史市场数据 + + Ready to take control of your personal finances? + 准备好掌控您的个人财务了吗? - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + apps/client/src/app/components/home-overview/home-overview.html + 8 - - Symbol - 符号 + + Setup your accounts + 设置您的帐户 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 45 + apps/client/src/app/components/home-overview/home-overview.html + 15 + + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + 通过添加您的银行和经纪账户来获取全面的财务概览。 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 24 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + 记录你的活动 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 115 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + 记录您的投资活动以使您的投资组合保持最新状态。 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 34 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + 监控和分析您的投资组合 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 301 + apps/client/src/app/components/home-overview/home-overview.html + 33 - - Data Source - 数据源 + + Track your progress in real-time with comprehensive analysis and insights. + 通过全面的分析和见解实时跟踪您的进度。 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 54 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + Setup accounts + 设置帐户 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 51 + apps/client/src/app/components/home-overview/home-overview.html + 44 + + + Add activity + 添加活动 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + apps/client/src/app/components/home-overview/home-overview.html + 52 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 150 + 8 - - Attempts - 尝试 + + Summary + 概括 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 82 + apps/client/src/app/components/home-summary/home-summary.html + 2 - - Created - 创建 + + Total Amount + 总金额 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 91 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 - - Finished - 完成的 + + Savings Rate + 储蓄率 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 100 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 213 - - Status - 状况 + + Security Token + 安全令牌 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 109 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 - - - Delete Jobs - 删除作业 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 158 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 251 - - - View Data - 查看数据 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 10 - - View Stacktrace - 查看堆栈跟踪 + + or + - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 - - - Delete Job - 删除作业 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 186 + apps/client/src/app/pages/landing/landing-page.html + 47 - - - Details for - 详细信息 - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 2 + apps/client/src/app/pages/landing/landing-page.html + 450 - - - Date - 日期 - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 6 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 156 + apps/client/src/app/pages/register/register-page.html + 30 - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + apps/client/src/app/pages/webauthn/webauthn-page.html + 29 + + + Sign in with Internet Identity + 使用互联网身份登录 - libs/ui/src/lib/activities-table/activities-table.component.html - 169 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 - - Market Price - 市场价 + + Sign in with Google + 使用 Google 登录 - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 26 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 112 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 - - Cancel - 取消 + + Stay signed in + 保持登录 - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 46 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 + + + Time in Market + 上市时间 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 376 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 + + + Buy + - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 40 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 + + + Sell + - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 39 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 + + + Investment + 投资 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 22 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 168 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 58 + + + Absolute Gross Performance + 绝对总业绩 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 57 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 + + + Gross Performance + 总表现 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 399 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 85 + + + Fees + 费用 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 38 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 203 - - - Save - 保存 - apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html - 48 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 108 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 383 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 176 + + + Absolute Net Performance + 绝对净绩效 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 47 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 126 + + + Net Performance + 净绩效 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 46 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 141 + + + Total Assets + 总资产 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 29 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 167 + + + Valuables + 贵重物品 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 180 + + + Emergency Fund + 应急基金 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 192 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 406 + apps/client/src/app/pages/features/features-page.html + 89 - - - Currencies - 货币 - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 73 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 122 - - ETFs without Countries - 没有国家的 ETF + + Cash + 现金 - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 78 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 226 - - ETFs without Sectors - 无行业类别的 ETF + + Assets + 资产 - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 83 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 239 - - Do you really want to delete this asset profile? - 您确实要删除此资产配置文件吗? + + Buying Power + 购买力 - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 13 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 252 - - Filter by... - 过滤... + + Excluded from Analysis + 从分析中排除 - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 282 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 264 - - Asset Class - 资产类别 + + Liabilities + 负债 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 60 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 279 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 159 + apps/client/src/app/pages/features/features-page.html + 102 + + + Net Worth + 净值 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 243 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 297 + + + Annualized Performance + 年化业绩 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 228 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 309 + + + Interest + 利息 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 326 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 331 - - Asset Sub Class - 资产子类别 + + Dividend + 股息 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 69 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 181 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 168 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 343 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 256 + apps/client/src/app/pages/features/features-page.html + 63 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 237 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 342 + 271 - - First Activity - 第一个活动 - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 78 - + + Please enter the amount of your emergency fund: + 请输入您的应急基金金额: - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 141 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 58 + + + Change + 修改 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 65 libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 + 119 - - Activities Count - 活动计数 + + Average Unit Price + 平均单价 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 87 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 103 - - Historical Data - 历史数据 - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 96 - + + Minimum Price + 最低价格 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 82 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 130 - - Sectors Count - 行业数 + + Maximum Price + 最高价格 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 105 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 146 - - Countries Count - 国家数 + + Quantity + 数量 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 114 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 156 - - - Gather Recent Data - 收集最近的数据 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 144 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 188 - - - Gather All Data - 收集所有数据 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 147 + libs/ui/src/lib/activities-table/activities-table.component.html + 185 - - Gather Profile Data - 收集个人资料数据 + + Report Data Glitch + 报告数据故障 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 150 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 448 + + + Are you an ambitious investor who needs the full picture? + 您是一位雄心勃勃、需要全面了解的投资者吗? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 12 - - Oops! Could not parse historical data. - 哎呀!无法解析历史数据。 + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + 立即升级至 Ghostfolio Premium 并获得独家功能,以增强您的投资体验: - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 232 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 15 - - Refresh - 刷新 + + Portfolio Summary + 投资组合摘要 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 22 - - - Gather Historical Data - 收集历史数据 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 32 + apps/client/src/app/pages/pricing/pricing-page.html + 57 - - - Import - 导入 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 108 + apps/client/src/app/pages/pricing/pricing-page.html + 203 + + + Portfolio Allocations + 投资组合分配 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 155 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 26 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 190 + apps/client/src/app/pages/features/features-page.html + 161 - - - Sector - 行业 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + apps/client/src/app/pages/pricing/pricing-page.html + 61 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 254 + apps/client/src/app/pages/pricing/pricing-page.html + 207 - - Country - 国家 + + Performance Benchmarks + 性能基准 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 30 - apps/client/src/app/components/admin-users/admin-users.html - 77 + apps/client/src/app/pages/pricing/pricing-page.html + 65 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 264 + apps/client/src/app/pages/pricing/pricing-page.html + 211 - - Sectors - 行业 + + FIRE Calculator + 财务自由计算器 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 34 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 327 + apps/client/src/app/pages/pricing/pricing-page.html + 69 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + apps/client/src/app/pages/pricing/pricing-page.html + 215 + + + + Professional Data Provider + 专业数据提供商 + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 38 - apps/client/src/app/pages/public/public-page.html - 45 + apps/client/src/app/pages/pricing/pricing-page.html + 230 - - Countries - 国家 + + and more Features... + 以及更多功能... - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 42 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 338 + apps/client/src/app/pages/pricing/pricing-page.html + 85 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 282 + apps/client/src/app/pages/pricing/pricing-page.html + 235 - - Benchmark - 基准 + + Get the tools to effectively manage your finances and refine your personal investment strategy. + 获取有效管理财务和完善个人投资策略的工具。 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 284 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 45 - - Symbol Mapping - 符号映射 + + Skip + 跳过 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 290 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 52 - - Scraper Configuration - 刮削配置 + + Upgrade Plan + 升级计划 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 302 + apps/client/src/app/components/header/header.component.html + 178 - - - Note - 笔记 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 363 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 59 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 16 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 311 + apps/client/src/app/pages/pricing/pricing-page.html + 271 - - Add Asset Profile - 添加资产概况 + + Today + 今天 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 + apps/client/src/app/components/toggle/toggle.component.ts + 22 - - - Search - 搜索 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + libs/ui/src/lib/assistant/assistant.component.ts + 215 - - Add Manually - 手动添加 - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Name, symbol or ISIN - 名称、符号或 ISIN - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 - + + YTD + 年初至今 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 120 + apps/client/src/app/components/toggle/toggle.component.ts + 23 - - - Please add a currency: - 请添加货币: - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 122 + libs/ui/src/lib/assistant/assistant.component.ts + 225 - - is an invalid currency! - 是无效的货币! + + 1Y + 1年 - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 129 + apps/client/src/app/components/toggle/toggle.component.ts + 24 - - - Do you really want to delete this coupon? - 您确实要删除此优惠券吗? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 140 + libs/ui/src/lib/assistant/assistant.component.ts + 229 - - Do you really want to delete this currency? - 您真的要删除该货币吗? + + 5Y + 5年 - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 153 + apps/client/src/app/components/toggle/toggle.component.ts + 25 - - - Do you really want to delete this system message? - 您真的要删除这条系统消息吗? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 166 + libs/ui/src/lib/assistant/assistant.component.ts + 250 - - Do you really want to flush the cache? - 您真的要刷新缓存吗? + + Max + 最大限度 - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 183 + apps/client/src/app/components/toggle/toggle.component.ts + 26 - - - Please set your system message: - 请设置您的系统消息: - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 214 + libs/ui/src/lib/assistant/assistant.component.ts + 253 - - Version - 版本 + + Grant access + 授予访问权限 - apps/client/src/app/components/admin-overview/admin-overview.html + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 7 - - User Count - 用户数 - - apps/client/src/app/components/admin-overview/admin-overview.html - 13 - - - - Activity Count - 活动计数 - - apps/client/src/app/components/admin-overview/admin-overview.html - 23 - - - - per User - 每位用户 - - apps/client/src/app/components/admin-overview/admin-overview.html - 32 - - - - Exchange Rates - 汇率 - - apps/client/src/app/components/admin-overview/admin-overview.html - 37 - - - - Add Currency - 添加货币 - - apps/client/src/app/components/admin-overview/admin-overview.html - 104 - - - - User Signup - 用户注册 - - apps/client/src/app/components/admin-overview/admin-overview.html - 110 - - - - Read-only Mode - 只读模式 + + Public + 公开 - apps/client/src/app/components/admin-overview/admin-overview.html - 123 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 - - System Message - 系统信息 + + Granted Access + 授予访问权限 - apps/client/src/app/components/admin-overview/admin-overview.html - 145 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 - - Set Message - 设置留言 + + Please enter your coupon code: + 请输入您的优惠券代码: - apps/client/src/app/components/admin-overview/admin-overview.html - 165 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 118 - - Coupons - 优惠券 + + Could not redeem coupon code + 无法兑换优惠券代码 - apps/client/src/app/components/admin-overview/admin-overview.html - 173 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Add - 添加 - - apps/client/src/app/components/admin-overview/admin-overview.html - 231 - + + Coupon code has been redeemed + 优惠券代码已兑换 - libs/ui/src/lib/account-balances/account-balances.component.html - 93 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 140 - - Housekeeping - 家政 + + Reload + 重新加载 - apps/client/src/app/components/admin-overview/admin-overview.html - 238 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 141 - - Flush Cache - 刷新缓存 + + per year + 每年 - apps/client/src/app/components/admin-overview/admin-overview.html - 242 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 33 - - - Add Platform - 添加平台 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + apps/client/src/app/pages/pricing/pricing-page.html + 257 - - Url - 网址 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 350 - - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 50 - + + Try Premium + 尝试高级版 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 22 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 40 - - Accounts - 帐户 - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 64 - - - apps/client/src/app/components/admin-users/admin-users.html - 113 - - - apps/client/src/app/components/header/header.component.html - 54 - - - apps/client/src/app/components/header/header.component.html - 262 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 357 - - - apps/client/src/app/pages/accounts/accounts-page.html - 4 - - - libs/ui/src/lib/assistant/assistant.html - 107 - - - - Do you really want to delete this platform? - 您真的要删除这个平台吗? - - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 79 - - - - Update platform - 更新平台 - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 7 - - - - Add platform - 添加平台 - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 - - - - Platforms - 平台 - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 - - - - Tags - 标签 - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 10 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 377 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 355 - - - libs/ui/src/lib/assistant/assistant.html - 127 - - - - Add Tag - 添加标签 - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - 您真的要删除此标签吗? - - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 79 - - - - Update tag - 更新标签 - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 7 - - - - Add tag - 添加标签 - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 - - - - Do you really want to delete this user? - 您真的要删除该用户吗? - - apps/client/src/app/components/admin-users/admin-users.component.ts - 113 - - - - User - 用户 - - apps/client/src/app/components/admin-users/admin-users.html - 29 - - - - Registration - 注册 - - apps/client/src/app/components/admin-users/admin-users.html - 96 - - - - Engagement per Day - 每天的参与度 - - apps/client/src/app/components/admin-users/admin-users.html - 158 - - - - Last Request - 最后请求 - - apps/client/src/app/components/admin-users/admin-users.html - 183 - - - - Impersonate User - 模拟用户 - - apps/client/src/app/components/admin-users/admin-users.html - 222 - - - - Delete User - 删除用户 - - apps/client/src/app/components/admin-users/admin-users.html - 232 - - - - Performance - 表现 - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 6 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 89 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 142 - - - - Compare with... - 与之比较... - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 19 - - - - Manage Benchmarks - 管理基准 - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 38 - - - - Portfolio - 文件夹 - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 116 - - - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 41 - - - - Benchmark - 基准 - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 128 - - - - Current Market Mood - 当前市场情绪 - - apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html - 12 - - - - Overview - 概述 - - apps/client/src/app/components/header/header.component.html - 28 - - - apps/client/src/app/components/header/header.component.html - 244 - - - - Portfolio - 文件夹 - - apps/client/src/app/components/header/header.component.html - 41 - - - apps/client/src/app/components/header/header.component.html - 254 - - - - Admin Control - 管理控制 - - apps/client/src/app/components/header/header.component.html - 67 - - - apps/client/src/app/components/header/header.component.html - 278 - - - - Me - - - apps/client/src/app/components/header/header.component.html - 211 - - - - User - 用户 - - apps/client/src/app/components/header/header.component.html - 230 - - - - My Ghostfolio - 我的 Ghostfolio - - apps/client/src/app/components/header/header.component.html - 269 - - - - About Ghostfolio - 关于 Ghostfolio - - apps/client/src/app/components/header/header.component.html - 309 - - - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 - - - - Sign in - 登入 - - apps/client/src/app/components/header/header.component.html - 399 - - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 71 - - - - Get started - 开始使用 - - apps/client/src/app/components/header/header.component.html - 411 - - - - Sign in - 登入 - - apps/client/src/app/app-routing.module.ts - 141 - - - apps/client/src/app/components/header/header.component.ts - 229 - - - - Oops! Incorrect Security Token. - 哎呀!安全令牌不正确。 - - apps/client/src/app/components/header/header.component.ts - 243 - - - - Manage Activities - 管理活动 - - apps/client/src/app/components/home-holdings/home-holdings.html - 32 - - - - Fear - 恐惧 - - apps/client/src/app/components/home-market/home-market.component.ts - 25 - - - libs/ui/src/lib/i18n.ts - 71 - - - - Greed - 贪婪 - - apps/client/src/app/components/home-market/home-market.component.ts - 26 - - - libs/ui/src/lib/i18n.ts - 72 - - - - Last Days - 最后的 - - apps/client/src/app/components/home-market/home-market.html - 6 - - - - Welcome to Ghostfolio - 欢迎来到Ghostfolio - - apps/client/src/app/components/home-overview/home-overview.html - 7 - - - - Ready to take control of your personal finances? - 准备好掌控您的个人财务了吗? - - apps/client/src/app/components/home-overview/home-overview.html - 8 - - - - Setup your accounts - 设置您的帐户 - - apps/client/src/app/components/home-overview/home-overview.html - 15 - - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - 通过添加您的银行和经纪账户来获取全面的财务概览。 - - apps/client/src/app/components/home-overview/home-overview.html - 17 - - - - Capture your activities - 记录你的活动 - - apps/client/src/app/components/home-overview/home-overview.html - 24 - - - - Record your investment activities to keep your portfolio up to date. - 记录您的投资活动以使您的投资组合保持最新状态。 - - apps/client/src/app/components/home-overview/home-overview.html - 26 - - - - Monitor and analyze your portfolio - 监控和分析您的投资组合 - - apps/client/src/app/components/home-overview/home-overview.html - 33 - - - - Track your progress in real-time with comprehensive analysis and insights. - 通过全面的分析和见解实时跟踪您的进度。 - - apps/client/src/app/components/home-overview/home-overview.html - 35 - - - - Setup accounts - 设置帐户 - - apps/client/src/app/components/home-overview/home-overview.html - 48 - - - - Add activity - 添加活动 - - apps/client/src/app/components/home-overview/home-overview.html - 56 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 8 - - - - This feature requires a subscription. - 此功能需要订阅。 - - apps/client/src/app/components/home-summary/home-summary.component.ts - 113 - - - apps/client/src/app/core/http-response.interceptor.ts - 69 - - - - Upgrade Plan - 升级计划 - - apps/client/src/app/components/home-summary/home-summary.component.ts - 115 - - - apps/client/src/app/core/http-response.interceptor.ts - 72 - - - - Summary - 概括 - - apps/client/src/app/components/home-summary/home-summary.html - 2 - - - - Total Amount - 总金额 - - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 142 - - - - Savings Rate - 储蓄率 - - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 214 - - - - Security Token - 安全令牌 - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 11 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 10 - - - - or - - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 31 - - - apps/client/src/app/pages/landing/landing-page.html - 423 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 99 - - - apps/client/src/app/pages/register/register-page.html - 29 - - - apps/client/src/app/pages/webauthn/webauthn-page.html - 29 - - - - Sign in with Internet Identity - 使用互联网身份登录 - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 42 - - - - Sign in with Google - 使用 Google 登录 - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 52 - - - - Stay signed in - 保持登录 - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 61 - - - - Time in Market - 上市时间 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 3 - - - - Buy - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 31 - - - - Sell - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 43 - - - - Investment - 投资 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 58 - - - - Absolute Gross Performance - 绝对总业绩 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 70 - - - - Gross Performance - 总表现 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 85 - - - - Fees - 费用 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 199 - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 108 - - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 161 - - - - Absolute Net Performance - 绝对净绩效 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 124 - - - - Net Performance - 净绩效 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 139 - - - - Total Assets - 总资产 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 165 - - - - Valuables - 贵重物品 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 178 - - - - Emergency Fund - 应急基金 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 190 - - - apps/client/src/app/pages/features/features-page.html - 89 - - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 122 - - - - Cash - 现金 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 211 - - - - Assets - 资产 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 224 - - - - Buying Power - 购买力 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 237 - - - - Excluded from Analysis - 从分析中排除 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 249 - - - - Liabilities - 负债 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 264 - - - apps/client/src/app/pages/features/features-page.html - 102 - - - - Net Worth - 净值 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 284 - - - - Annualized Performance - 年化业绩 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 296 - - - - Interest - 利息 - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 318 - - - - Dividend - 股息 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 177 - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 330 - - - apps/client/src/app/pages/features/features-page.html - 63 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 192 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 255 - - - - Please enter the amount of your emergency fund: - 请输入您的应急基金金额: - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 57 - - - - Change - 修改 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 63 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 119 - - - - Average Unit Price - 平均单价 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 101 - - - - Minimum Price - 最低价格 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 128 - - - - Maximum Price - 最高价格 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 144 - - - - Quantity - 数量 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 154 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 179 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 185 - - - - Report Data Glitch - 报告数据故障 - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 395 - - - - Are you an ambitious investor who needs the full picture? - 您是一位雄心勃勃、需要全面了解的投资者吗? - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 12 - - - - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - 立即升级至 Ghostfolio Premium 并获得独家功能,以增强您的投资体验: - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 15 - - - - Portfolio Summary - 投资组合摘要 - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 22 - - - apps/client/src/app/pages/pricing/pricing-page.html - 55 - - - apps/client/src/app/pages/pricing/pricing-page.html - 199 - - - - Portfolio Allocations - 投资组合分配 - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 26 - - - apps/client/src/app/pages/features/features-page.html - 160 - - - apps/client/src/app/pages/pricing/pricing-page.html - 59 - - - apps/client/src/app/pages/pricing/pricing-page.html - 203 - - - - Performance Benchmarks - 性能基准 - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 30 - - - apps/client/src/app/pages/pricing/pricing-page.html - 63 - - - apps/client/src/app/pages/pricing/pricing-page.html - 207 - - - - FIRE Calculator - 财务自由计算器 - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 34 - - - apps/client/src/app/pages/pricing/pricing-page.html - 67 - - - apps/client/src/app/pages/pricing/pricing-page.html - 211 - - - - Professional Data Provider - 专业数据提供商 - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 38 - - - apps/client/src/app/pages/pricing/pricing-page.html - 226 - - - - and more Features... - 以及更多功能... - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 42 - - - apps/client/src/app/pages/pricing/pricing-page.html - 83 - - - apps/client/src/app/pages/pricing/pricing-page.html - 231 - - - - Get the tools to effectively manage your finances and refine your personal investment strategy. - 获取有效管理财务和完善个人投资策略的工具。 - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 45 - - - - Skip - 跳过 - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 52 - - - - Upgrade Plan - 升级计划 - - apps/client/src/app/components/header/header.component.html - 182 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 59 - - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 - - - apps/client/src/app/pages/pricing/pricing-page.html - 268 - - - - Today - 今天 - - apps/client/src/app/components/toggle/toggle.component.ts - 22 - - - libs/ui/src/lib/assistant/assistant.component.ts - 215 - - - - YTD - 年初至今 - - apps/client/src/app/components/toggle/toggle.component.ts - 23 - - - libs/ui/src/lib/assistant/assistant.component.ts - 225 - - - - 1Y - 1年 - - apps/client/src/app/components/toggle/toggle.component.ts - 24 - - - libs/ui/src/lib/assistant/assistant.component.ts - 229 - - - - 5Y - 5年 - - apps/client/src/app/components/toggle/toggle.component.ts - 25 - - - libs/ui/src/lib/assistant/assistant.component.ts - 250 - - - - Max - 最大限度 - - apps/client/src/app/components/toggle/toggle.component.ts - 26 - - - libs/ui/src/lib/assistant/assistant.component.ts - 253 - - - - Grant access - 授予访问权限 - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 - - - - Public - 公开 - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - - - - Granted Access - 授予访问权限 - - apps/client/src/app/components/user-account-access/user-account-access.html - 5 - - - - Please enter your coupon code: - 请输入您的优惠券代码: - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 111 - - - - Could not redeem coupon code - 无法兑换优惠券代码 - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 121 - - - - Coupon code has been redeemed - 优惠券代码已兑换 - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 - - - - Reload - 重新加载 - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 134 - - - - per year - 每年 - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 - - - apps/client/src/app/pages/pricing/pricing-page.html - 254 - - - - Try Premium - 尝试高级版 - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 50 - - - - Redeem Coupon - 兑换优惠券 - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 - - - - Auto - 自动 - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 33 - - - - Do you really want to remove this sign in method? - 您确实要删除此登录方法吗? - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 189 - - - - Settings - 设置 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 - - - - Presenter View - 演示者视图 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 7 - - - - Protection for sensitive information like absolute performances and quantity values - 保护绝对性能和数量值等敏感信息 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 8 - - - - Base Currency - 基础货币 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 27 - - - - Language - 语言 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 50 - - - - Locale - 语言环境 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 121 - - - - Date and number format - 日期和数字格式 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 - - - - Appearance - 外貌 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 146 - - - - Auto - 自动 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 160 - - - - Light - 明亮 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 161 - - - - Dark - 黑暗 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 162 - - - - Zen Mode - 极简模式 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 171 - - - apps/client/src/app/pages/features/features-page.html - 190 - - - - Distraction-free experience for turbulent times - 动荡时期的无干扰体验 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 - - - - Biometric Authentication - 生物识别认证 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 188 - - - - Sign in with fingerprint - 使用指纹登录 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 189 - - - - Experimental Features - 实验性功能 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 206 - - - - Sneak peek at upcoming functionality - 预览即将推出的功能 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 207 - - - - User ID - 用户身份 - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 45 - - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 223 - - - - Export Data - 导出数据 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 231 - - - - This feature is currently unavailable. - 此功能目前无法使用。 - - apps/client/src/app/core/http-response.interceptor.ts - 60 - - - - Please try again later. - 请稍后再试。 - - apps/client/src/app/core/http-response.interceptor.ts - 62 - - - apps/client/src/app/core/http-response.interceptor.ts - 91 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 138 - - - - Oops! Something went wrong. - 哎呀!出了些问题。 - - apps/client/src/app/core/http-response.interceptor.ts - 89 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 136 - - - - Okay - 好的 - - apps/client/src/app/core/http-response.interceptor.ts - 92 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 139 - - - - About - 关于 - - apps/client/src/app/pages/about/about-page-routing.module.ts - 51 - - - apps/client/src/app/pages/about/about-page.component.ts - 44 - - - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 - - - - Changelog - 更新日志 - - apps/client/src/app/pages/about/about-page.component.ts - 49 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 - - - - License - 许可 - - apps/client/src/app/pages/about/about-page.component.ts - 54 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 - - - - Privacy Policy - 隐私政策 - - apps/client/src/app/pages/about/about-page.component.ts - 62 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 - - - - Our - 我们的 - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 - - - - Discover other exciting Open Source Software projects - 发现其他令人兴奋的开源软件项目 - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 - - - - Visit - 访问 - - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 - - - - Accounts - 账户 - - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 - - - - Oops, cash balance transfer has failed. - 糟糕,现金余额转账失败。 - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 304 - - - - Update account - 更新账户 - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 8 - - - - Add account - 新增帐户 - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 10 - - - - Account ID - 帐户ID - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 96 - - - - From - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 - - - - To - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 28 - - - - Transfer - 转移 - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 64 - - - - Admin Control - 管理控制 - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 - - - - Market Data - 市场数据 - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 37 - - - - Settings - 设置 - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 32 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 - - - apps/client/src/app/pages/user-account/user-account-page.component.ts - 35 - - - - Users - 用户 - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 47 - - - - Overview - 概述 - - apps/client/src/app/pages/admin/admin-page.component.ts - 27 - - - apps/client/src/app/pages/home/home-page.component.ts - 37 - - - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 - - - apps/client/src/app/pages/zen/zen-page.component.ts - 34 - - - - Blog - 博客 - - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 - - - - Discover the latest Ghostfolio updates and insights on personal finance - 了解最新的 Ghostfolio 更新和个人理财见解 - - apps/client/src/app/pages/blog/blog-page.html - 7 - - - - As you are already logged in, you cannot access the demo account. - 由于您已经登录,因此无法访问模拟帐户。 - - apps/client/src/app/pages/demo/demo-page.component.ts - 35 - - - - Frequently Asked Questions (FAQ) - 常见问题 (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - - - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts - 13 - - - - Frequently Asked Questions (FAQ) - 常见问题 (FAQ) - - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 - - - apps/client/src/app/pages/faq/saas/saas-page.html - 4 - - - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 - - - - Features - 功能 - - apps/client/src/app/app-routing.module.ts - 65 - - - - Check out the numerous features of Ghostfolio to manage your wealth - 查看 Ghostfolio 的众多功能来管理您的财富 - - apps/client/src/app/pages/features/features-page.html - 6 - - - - Stocks - 股票 - - apps/client/src/app/pages/features/features-page.html - 15 - - - - ETFs - ETF - - apps/client/src/app/pages/features/features-page.html - 25 - - - - Bonds - 债券 - - apps/client/src/app/pages/features/features-page.html - 38 - - - - Cryptocurrencies - 加密货币 - - apps/client/src/app/pages/features/features-page.html - 51 - - - - Wealth Items - 财富项目 - - apps/client/src/app/pages/features/features-page.html - 76 - - - - Import and Export - 导入和导出 - - apps/client/src/app/pages/features/features-page.html - 115 - - - - Multi-Accounts - 多账户 - - apps/client/src/app/pages/features/features-page.html - 127 - - - - Portfolio Calculations - 投资组合计算 - - apps/client/src/app/pages/features/features-page.html - 141 - - - - Dark Mode - 深色模式 - - apps/client/src/app/pages/features/features-page.html - 177 - - - - Market Mood - 市场情绪 - - apps/client/src/app/pages/features/features-page.html - 205 - - - - Static Analysis - 静态分析 - - apps/client/src/app/pages/features/features-page.html - 224 - - - - Multi-Language - 多语言 - - apps/client/src/app/pages/features/features-page.html - 241 - - - - Open Source Software - 开源软件 - - apps/client/src/app/pages/features/features-page.html - 275 - - - - Get Started - 立即开始 - - apps/client/src/app/pages/features/features-page.html - 300 - - - apps/client/src/app/pages/public/public-page.html - 153 - - - - Holdings - 控股 - - apps/client/src/app/pages/home/home-page-routing.module.ts - 23 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 42 - - - apps/client/src/app/pages/zen/zen-page.component.ts - 39 - - - - Summary - 概括 - - apps/client/src/app/pages/home/home-page-routing.module.ts - 33 - - - apps/client/src/app/pages/home/home-page.component.ts - 47 - - - - Markets - 市场 - - apps/client/src/app/pages/home/home-page-routing.module.ts - 38 - - - apps/client/src/app/pages/home/home-page.component.ts - 52 - - - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 - - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio 是一个个人财务仪表板,用于跨多个平台跟踪您的净资产,包括现金、股票、ETF 和加密货币。 - - apps/client/src/app/pages/i18n/i18n-page.html - 4 - - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - 应用程序、资产、加密货币、仪表板、etf、财务、管理、绩效、投资组合、软件、股票、交易、财富、web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Open Source Wealth Management Software - 开源财富管理软件 - - apps/client/src/app/pages/i18n/i18n-page.html - 14 - - - - Manage your wealth like a boss - 像老板一样管理您的财富 - - apps/client/src/app/pages/landing/landing-page.html - 5 - - - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio 是一个隐私优先、开源的个人财务仪表板。分解您的资产配置,了解您的净资产并做出可靠的、数据驱动的投资决策。 - - apps/client/src/app/pages/landing/landing-page.html - 9 - - - - Get Started - 开始使用 - - apps/client/src/app/pages/landing/landing-page.html - 41 - - - apps/client/src/app/pages/landing/landing-page.html - 419 - - - - or - - - apps/client/src/app/pages/landing/landing-page.html - 46 - - - - Live Demo - 现场演示 - - apps/client/src/app/pages/landing/landing-page.html - 49 - - - apps/client/src/app/pages/landing/landing-page.html - 424 - - - - Monthly Active Users - 每月活跃用户数 - - apps/client/src/app/pages/landing/landing-page.html - 69 - - - - Stars on GitHub - GitHub 上的星星 - - apps/client/src/app/pages/landing/landing-page.html - 87 - - - apps/client/src/app/pages/open/open-page.html - 103 - - - - Pulls on Docker Hub - 拉动 Docker Hub - - apps/client/src/app/pages/landing/landing-page.html - 105 - - - apps/client/src/app/pages/open/open-page.html - 117 - - - - As seen in - 如图所示 - - apps/client/src/app/pages/landing/landing-page.html - 113 - - - - Protect your assets. Refine your personal investment strategy. - 保护你的资产。完善你的个人投资策略 - - apps/client/src/app/pages/landing/landing-page.html - 215 - - - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio 使忙碌的人们能够在不被追踪的情况下跟踪股票、ETF 或加密货币。 - - apps/client/src/app/pages/landing/landing-page.html - 219 - - - - 360° View - 360° 视角 - - apps/client/src/app/pages/landing/landing-page.html - 230 - - - - Get the full picture of your personal finances across multiple platforms. - 跨多个平台全面了解您的个人财务状况。 - - apps/client/src/app/pages/landing/landing-page.html - 232 - - - - Web3 Ready - Web3 就绪 - - apps/client/src/app/pages/landing/landing-page.html - 241 - - - - Use Ghostfolio anonymously and own your financial data. - 匿名使用 Ghostfolio 并拥有您的财务数据。 - - apps/client/src/app/pages/landing/landing-page.html - 243 - - - - Open Source - 开源 - - apps/client/src/app/pages/landing/landing-page.html - 251 - - - - Benefit from continuous improvements through a strong community. - 通过强大的社区不断改进,从中受益。 - - apps/client/src/app/pages/landing/landing-page.html - 253 - - - - Why Ghostfolio? - 为什么使用Ghostfolio - - apps/client/src/app/pages/landing/landing-page.html - 262 - - - - Ghostfolio is for you if you are... - 如果您符合以下条件,那么 Ghostfolio 适合您... - - apps/client/src/app/pages/landing/landing-page.html - 263 - - - - trading stocks, ETFs or cryptocurrencies on multiple platforms - 在多个平台上交易股票、ETF 或加密货币 - - apps/client/src/app/pages/landing/landing-page.html - 270 - - - - pursuing a buy & hold strategy - 采取买入并持有策略 - - apps/client/src/app/pages/landing/landing-page.html - 276 - - - - interested in getting insights of your portfolio composition - 有兴趣深入了解您的投资组合构成 - - apps/client/src/app/pages/landing/landing-page.html - 281 - - - - valuing privacy and data ownership - 重视隐私和数据所有权 - - apps/client/src/app/pages/landing/landing-page.html - 286 - - - - into minimalism - 进入极简主义 - - apps/client/src/app/pages/landing/landing-page.html - 289 - - - - caring about diversifying your financial resources - 关心您的财务资源多元化 - - apps/client/src/app/pages/landing/landing-page.html - 293 - - - - interested in financial independence - 对财务独立感兴趣 - - apps/client/src/app/pages/landing/landing-page.html - 297 - - - - saying no to spreadsheets in - 对电子表格说不 - - apps/client/src/app/pages/landing/landing-page.html - 301 - - - - still reading this list - 仍在阅读此列表 - - apps/client/src/app/pages/landing/landing-page.html - 304 - - - - Learn more about Ghostfolio - 了解有关 Ghostfolio 的更多信息 - - apps/client/src/app/pages/landing/landing-page.html - 309 - - - - What our users are saying - 我们的什么用户正在说 - - apps/client/src/app/pages/landing/landing-page.html - 317 - - - - Members from around the globe are using Ghostfolio Premium - 来自世界各地的会员正在使用Ghostfolio 高级版 - - apps/client/src/app/pages/landing/landing-page.html - 349 - - - - How does Ghostfolio work? - 如何幽灵作品集工作? - - apps/client/src/app/pages/landing/landing-page.html - 361 - - - - Get started in only 3 steps - 只需 3 步即可开始 - - apps/client/src/app/pages/landing/landing-page.html - 364 - - - - Sign up anonymously* - 匿名注册* - - apps/client/src/app/pages/landing/landing-page.html - 370 - - - - * no e-mail address nor credit card required - * 无需电子邮件地址或信用卡 - - apps/client/src/app/pages/landing/landing-page.html - 372 - - - - Add any of your historical transactions - 添加您的任何历史交易 - - apps/client/src/app/pages/landing/landing-page.html - 383 - - - - Get valuable insights of your portfolio composition - 获取有关您的投资组合构成的宝贵见解 - - apps/client/src/app/pages/landing/landing-page.html - 395 - - - - Are you ready? - 准备好? - - apps/client/src/app/pages/landing/landing-page.html - 407 - - - - Join now or check out the example account - 立即加入或查看示例帐户 - - apps/client/src/app/pages/landing/landing-page.html - 408 - - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - 在 Ghostfolio,透明度是我们价值观的核心。我们将源代码发布为开源软件(OSS)下AGPL-3.0许可证我们公开分享平台运营状态的汇总关键指标。 - - apps/client/src/app/pages/open/open-page.html - 6 - - - - (Last 24 hours) - (最近 24 小时) - - apps/client/src/app/pages/open/open-page.html - 37 - - - - Active Users - 活跃用户 - - apps/client/src/app/pages/open/open-page.html - 40 - - - apps/client/src/app/pages/open/open-page.html - 62 - - - - (Last 30 days) - (最近 30 天) - - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 - - - - New Users - 新用户 - - apps/client/src/app/pages/open/open-page.html - 51 - - - - Users in Slack community - Slack 社区的用户 - - apps/client/src/app/pages/open/open-page.html - 75 - - - - Contributors on GitHub - GitHub 上的贡献者 - - apps/client/src/app/pages/open/open-page.html - 89 - - - - (Last 90 days) - (过去 90 天) - - apps/client/src/app/pages/open/open-page.html - 127 - - - - Uptime - 正常运行时间 - - apps/client/src/app/pages/open/open-page.html - 132 - - - - Activities - 活动 - - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 39 - - - - Do you really want to delete these activities? - 您真的要删除所有活动吗? - - libs/ui/src/lib/activities-table/activities-table.component.ts - 216 - - - - Update activity - 更新活动 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 7 - - - - Stocks, ETFs, bonds, cryptocurrencies, commodities - 股票、ETF、债券、加密货币、大宗商品 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 22 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 62 - - - - One-time fee, annual account fees - 一次性费用、年度账户费用 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 - - - - Distribution of corporate earnings - 企业盈利分配 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 38 - - - - Revenue for lending out money - 放贷收入 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 46 - - - - Mortgages, personal loans, credit cards - 抵押贷款、个人贷款、信用卡 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 54 - - - - Luxury items, real estate, private companies - 奢侈品、房地产、私营公司 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 70 - - - - Account - 帐户 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 82 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 307 - - - - Update Cash Balance - 更新现金余额 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 108 - - - - Unit Price - 单价 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 199 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 261 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 209 - - - - Oops! Could not get the historical exchange rate from - 哎呀!无法从以下来源获取历史汇率 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 226 - - - - Fee - 费用 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 280 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 233 - - - - Oops! Could not get the historical exchange rate from - 哎呀!无法获取历史汇率 - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 292 - - - - Import Activities - 导入活动 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 44 - - - - Import Dividends - 导入股息 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 86 - - - - Importing data... - 正在导入数据... - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 120 - - - - Import has been completed - 导入已完成 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 128 - - - - Validating data... - 验证数据... - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 233 - - - - Select Holding - 选择控股 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 20 - - - - Select File - 选择文件 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 23 - - - - Holding - 保持 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 33 - - - - Load Dividends - 加载股息 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 70 - - - - Choose or drop a file here - 在此处选择或放置文件 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 86 - - - - The following file formats are supported: - 支持以下文件格式: - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 92 - - - - Select Dividends - 选择股息 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 - - - - Select Activities - 选择活动 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 118 - - - - Back - 后退 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 146 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 182 - - - - Allocations - 分配 - - apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 44 - - - - Allocations - 分配 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 4 - - - - Proportion of Net Worth - 占净资产的比例 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 12 - - - - By Platform - 按平台 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 44 - - - - By Currency - 按货币 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 63 - - - - By Asset Class - 按资产类别 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 86 - - - - By Holding - 通过持有 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 109 - - - - By Sector - 按部门 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 132 - - - - By Continent - 按大陆 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 156 - - - - By Market - 按市场 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 179 - - - - Regions - 区域 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 203 - - - apps/client/src/app/pages/public/public-page.html - 76 - - - - Developed Markets - 发达市场 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 228 - - - apps/client/src/app/pages/public/public-page.html - 93 - - - - Emerging Markets - 新兴市场 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 237 - - - apps/client/src/app/pages/public/public-page.html - 102 - - - - Other Markets - 其他市场 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 246 - - - apps/client/src/app/pages/public/public-page.html - 111 - - - - No data available - 无可用数据 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 123 - - - - By Account - 按帐户 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 270 - - - - By ETF Provider - 按 ETF 提供商 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 290 - - - - By Country - 按国家/地区 - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 313 - - - - Analysis - 分析 - - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 34 - - - - Dividend - 股息 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 38 - - - libs/ui/src/lib/i18n.ts - 32 - - - - Deposit - 订金 - - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 357 - - - - Monthly - 每月 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 50 - - - - Yearly - 每年 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 51 - - - - Analysis - 分析 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 2 - - - - Top - 顶部 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 168 - - - - Bottom - 底部 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 214 - - - - Portfolio Evolution - 投资组合演变 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 264 - - - - Investment Timeline - 投资时间表 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 294 - - - - Current Streak - 当前连胜 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 315 - - - - Longest Streak - 最长连续纪录 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 324 - - - - Dividend Timeline - 股息时间表 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 352 - - - - FIRE - 财务独立 - - apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts - 13 - - - - FIRE - 财务独立 - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 4 - - - - Calculator - 计算器 - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 7 - - - - 4% Rule - 4%规则 - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 41 - - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray 使用静态分析来识别您的投资组合中的潜在问题和风险。 - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 - - - - Currency Cluster Risks - 货币集群风险 - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 135 - - - - Account Cluster Risks - 账户集群风险 - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 148 - - - - Holdings - 控股 - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 77 - - - apps/client/src/app/components/home-holdings/home-holdings.html - 4 - - - apps/client/src/app/pages/public/public-page.html - 14 - - - libs/ui/src/lib/assistant/assistant.html - 46 - - - - Pricing - 价钱 - - apps/client/src/app/pages/pricing/pricing-page-routing.module.ts - 13 - - - - Pricing Plans - 定价计划 - - apps/client/src/app/pages/pricing/pricing-page.html - 4 - - - - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - 我们的官方 Ghostfolio Premium 云产品是最简单的入门方法。由于它节省了时间,这对于大多数人来说将是最佳选择。收入用于支付托管基础设施的成本和资助持续开发。 - - apps/client/src/app/pages/pricing/pricing-page.html - 6 - - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - 如果你希望在自己的基础设施上运行 Ghostfolio,请查看源代码和进一步的说明GitHub - - apps/client/src/app/pages/pricing/pricing-page.html - 24 - - - - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - 适合喜欢在自己的基础设施上运行 Ghostfolio 的精通技术的投资者。 - - apps/client/src/app/pages/pricing/pricing-page.html - 36 - - - - Unlimited Transactions - 无限交易 - - apps/client/src/app/pages/pricing/pricing-page.html - 43 - - - apps/client/src/app/pages/pricing/pricing-page.html - 126 - - - apps/client/src/app/pages/pricing/pricing-page.html - 187 - - - - Unlimited Accounts - 无限账户 - - apps/client/src/app/pages/pricing/pricing-page.html - 47 - - - apps/client/src/app/pages/pricing/pricing-page.html - 130 - - - apps/client/src/app/pages/pricing/pricing-page.html - 191 - - - - Portfolio Performance - 投资组合表现 - - apps/client/src/app/pages/pricing/pricing-page.html - 51 - - - apps/client/src/app/pages/pricing/pricing-page.html - 134 - - - apps/client/src/app/pages/pricing/pricing-page.html - 195 - - - - Data Import and Export - 数据导入与导出 - - apps/client/src/app/pages/pricing/pricing-page.html - 71 - - - apps/client/src/app/pages/pricing/pricing-page.html - 138 - - - apps/client/src/app/pages/pricing/pricing-page.html - 215 - - - - Community Support - 社区支持 - - apps/client/src/app/pages/pricing/pricing-page.html - 88 - - - - Self-hosted, update manually. - 自托管,手动更新。 - - apps/client/src/app/pages/pricing/pricing-page.html - 92 - - - - Free - 自由的 - - apps/client/src/app/pages/pricing/pricing-page.html - 93 - - - apps/client/src/app/pages/pricing/pricing-page.html - 150 - - - - For new investors who are just getting started with trading. - 适合刚开始交易的新投资者。 - - apps/client/src/app/pages/pricing/pricing-page.html - 120 - - - - Fully managed Ghostfolio cloud offering. - 完全托管的 Ghostfolio 云产品。 - - apps/client/src/app/pages/pricing/pricing-page.html - 149 - - - apps/client/src/app/pages/pricing/pricing-page.html - 240 - - - - For ambitious investors who need the full picture of their financial assets. - 适合需要全面了解其金融资产的雄心勃勃的投资者。 - - apps/client/src/app/pages/pricing/pricing-page.html - 180 - - - - Email and Chat Support - 电子邮件和聊天支持 - - apps/client/src/app/pages/pricing/pricing-page.html - 236 - - - - Renew Plan - 更新计划 - - apps/client/src/app/components/header/header.component.html - 190 - - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 28 - - - apps/client/src/app/pages/pricing/pricing-page.html - 276 - - - - One-time payment, no auto-renewal. - 一次性付款,无自动续订。 - - apps/client/src/app/pages/pricing/pricing-page.html - 280 - - - - Get Started - 开始使用 - - apps/client/src/app/pages/pricing/pricing-page.html - 291 - - - - It’s free. - 免费。 - - apps/client/src/app/pages/pricing/pricing-page.html - 294 - - - - Hello, has shared a Portfolio with you! - 你好,分享了一个文件夹与你! - - apps/client/src/app/pages/public/public-page.html - 4 - - - - Currencies - 货币 - - apps/client/src/app/pages/public/public-page.html - 30 - - - - Continents - 大陆 - - apps/client/src/app/pages/public/public-page.html - 60 - - - - Ghostfolio empowers you to keep track of your wealth. - Ghostfolio 使您能够跟踪您的财富。 - - apps/client/src/app/pages/public/public-page.html - 148 - - - - Registration - 注册 - - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 - - - - Continue with Internet Identity - 继续互联网身份 - - apps/client/src/app/pages/register/register-page.html - 41 - - - - Continue with Google - 继续使用谷歌 - - apps/client/src/app/pages/register/register-page.html - 51 - - - - Copy to clipboard - 复制到剪贴板 - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 26 - - - - I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. - 我同意存储我的保安编码器从上面看,在一个安全的地方。如果我丢失了它,我将无法找回我的帐户。 - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 32 - - - - Agree and continue - 同意并继续 - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 45 - - - - Personal Finance Tools - 个人理财工具 - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 - - - - open-source-alternative-to - 开源替代方案 - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 23 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 - - - - Open Source Alternative to - 开源替代方案 - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - - - - Discover Open Source Alternatives for Personal Finance Tools - 发现个人理财工具的开源替代品 - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - 此概述页面包含与开源替代方案相比的精选个人理财工具集合Ghostfolio。如果您重视透明度、数据隐私和社区协作,Ghostfolio 提供了一个绝佳的机会来控制您的财务管理。 - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 - - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - 浏览下面的链接,将各种个人理财工具与 Ghostfolio 进行比较。 - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 - - - - Open Source Alternative to - 开源替代方案 - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 38 - - - - The Open Source Alternative to - 开源替代方案 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 8 - - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - 您是否正在寻找开源替代方案幽灵作品集是一个强大的投资组合管理工具,为个人提供一个全面的平台来跟踪、分析和优化他们的投资。无论您是经验丰富的投资者还是刚刚起步的投资者,Ghostfolio 都提供直观的用户界面和广泛的功能帮助您做出明智的决定并掌控您的财务未来。 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 13 - - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio 是一款开源软件 (OSS),提供了一种经济高效的替代方案使其特别适合预算紧张的个人,例如追求财务独立,提前退休(FIRE) 。通过利用开发者社区和个人理财爱好者的集体努力,Ghostfolio 不断增强其功能、安全性和用户体验。 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 27 - - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - 让我们更深入地了解 Ghostfolio 与下面的比较表可帮助您全面了解 Ghostfolio 相对于其他产品的定位。我们将探讨功能、数据隐私、定价等各个方面,让您根据个人需求做出明智的选择。 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 38 - - - - Ghostfolio vs comparison table - Ghostfolio vs比较表 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 49 - - - - Founded - 成立 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 72 - - - - Origin - 来源 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 77 - - - - Region - 地区 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 82 - - - - Available in - 可用于 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 87 - - - - ✅ Yes - ✅ 是的 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 116 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 130 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 162 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 181 - - - - ❌ No - ❌ 没有 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 111 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 134 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 145 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 176 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 183 - - - - ❌ No - ❌ 没有 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 118 - - - - Self-Hosting - 自托管 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 123 - - - - Use anonymously - 匿名使用 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 150 - - - - Free Plan - 免费计划 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 169 - - - - Starting from - 从...开始 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 190 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 - - - - year - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 - + + Redeem Coupon + 兑换优惠券 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 54 + + + Auto + 自动 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 38 + + + Do you really want to remove this sign in method? + 您确实要删除此登录方法吗? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 252 + + + Settings + 设置 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + Presenter View + 演示者视图 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 + + + Protection for sensitive information like absolute performances and quantity values + 保护绝对性能和数量值等敏感信息 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 + + + Base Currency + 基础货币 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 + + + Language + 语言 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 + + + Locale + 语言环境 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 + + + Date and number format + 日期和数字格式 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 + + + Appearance + 外貌 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 148 + + + Auto + 自动 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 162 + + + Light + 明亮 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 163 + + + Dark + 黑暗 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 164 + + + Zen Mode + 极简模式 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 173 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/pages/features/features-page.html + 191 + + + Distraction-free experience for turbulent times + 动荡时期的无干扰体验 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 174 + + + Biometric Authentication + 生物识别认证 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 190 + + + Sign in with fingerprint + 使用指纹登录 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 + + + Experimental Features + 实验性功能 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 197 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 207 - - Notes - 笔记 + + Sneak peek at upcoming functionality + 预览即将推出的功能 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 208 + + + User ID + 用户身份 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 224 + + + Export Data + 导出数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 232 + + + This feature is currently unavailable. + 此功能目前无法使用。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 53 + + + Please try again later. + 请稍后再试。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 55 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 80 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 138 + + + Oops! Something went wrong. + 哎呀!出了些问题。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 78 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 136 + + + Okay + 好的 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/core/http-response.interceptor.ts + 81 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 139 + + + About + 关于 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page-routing.module.ts + 51 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page.component.ts + 44 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts + 13 + + + Changelog + 更新日志 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page.component.ts + 49 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts + 13 + + + License + 许可 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page.component.ts + 54 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/license/license-page-routing.module.ts + 13 + + + Privacy Policy + 隐私政策 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/about-page.component.ts + 62 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts + 13 + + + Our + 我们的 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + Discover other exciting Open Source Software projects + 发现其他令人兴奋的开源软件项目 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 + + + Visit + 访问 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + Accounts + 账户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/accounts-page-routing.module.ts + 13 + + + Oops, cash balance transfer has failed. + 糟糕,现金余额转账失败。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 311 + + + Update account + 更新账户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 + + + Add account + 新增帐户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 10 + + + Account ID + 帐户ID - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 96 + + + From + - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + 转移 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Admin Control + 管理控制 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 20 + + + Market Data + 市场数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 + + + Settings + 设置 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 35 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page.component.ts + 32 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 35 + + + Users + 用户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page.component.ts + 47 + + + Overview + 概述 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/admin/admin-page.component.ts + 27 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/home/home-page.component.ts + 37 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/zen/zen-page-routing.module.ts + 19 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/zen/zen-page.component.ts + 34 + + + Blog + 博客 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/blog/blog-page-routing.module.ts + 13 + + + Discover the latest Ghostfolio updates and insights on personal finance + 了解最新的 Ghostfolio 更新和个人理财见解 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/blog/blog-page.html + 7 + + + As you are already logged in, you cannot access the demo account. + 由于您已经登录,因此无法访问模拟帐户。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/demo/demo-page.component.ts + 35 + + + Frequently Asked Questions (FAQ) + 常见问题 (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/faq/faq-page-routing.module.ts + 34 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts + 13 + + + Frequently Asked Questions (FAQ) + 常见问题 (FAQ) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 202 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. - 请注意,Ghostfolio 与 Ghostfolio 中提供的信息比较表基于我们的独立研究和分析。该网站不隶属于或比较中提到的任何其他产品。随着个人理财工具格局的不断发展,直接从相应的产品页面验证任何具体的细节或变化至关重要。数据需要刷新吗?帮助我们维护准确的数据GitHub - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 - + + Features + 功能 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/app-routing.module.ts + 65 + + + Check out the numerous features of Ghostfolio to manage your wealth + 查看 Ghostfolio 的众多功能来管理您的财富 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 6 + + + Stocks + 股票 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 15 + + + ETFs + ETF - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 25 + + + Bonds + 债券 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 38 + + + Cryptocurrencies + 加密货币 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 51 + + + Wealth Items + 财富项目 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 76 + + + Import and Export + 导入和导出 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 115 + + + Multi-Accounts + 多账户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 127 + + + Portfolio Calculations + 投资组合计算 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 141 + + + Dark Mode + 深色模式 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 178 + + + Market Mood + 市场情绪 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 206 + + + Static Analysis + 静态分析 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 225 + + + Multi-Language + 多语言 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 242 + + + Open Source Software + 开源软件 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 278 + + + Get Started + 立即开始 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/features/features-page.html + 303 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/public/public-page.html + 164 + + + Holdings + 控股 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page-routing.module.ts + 23 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page.component.ts + 42 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/zen/zen-page.component.ts + 39 + + + Summary + 概括 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page-routing.module.ts + 33 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page.component.ts + 47 + + + Markets + 市场 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page-routing.module.ts + 38 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/home/home-page.component.ts + 52 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/markets/markets-page-routing.module.ts + 13 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio 是一个个人财务仪表板,用于跨多个平台跟踪您的净资产,包括现金、股票、ETF 和加密货币。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + 应用程序、资产、加密货币、仪表板、etf、财务、管理、绩效、投资组合、软件、股票、交易、财富、web3 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Open Source Wealth Management Software + 开源财富管理软件 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Manage your wealth like a boss + 像老板一样管理您的财富 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio 是一个隐私优先、开源的个人财务仪表板。分解您的资产配置,了解您的净资产并做出可靠的、数据驱动的投资决策。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 9 + + + Get Started + 开始使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Live Demo + 现场演示 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 49 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 451 + + + Monthly Active Users + 每月活跃用户数 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 70 + + + Stars on GitHub + GitHub 上的星星 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 88 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/open/open-page.html + 103 + + + Pulls on Docker Hub + 拉动 Docker Hub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 106 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/open/open-page.html + 117 + + + As seen in + 如图所示 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + 保护你的资产。完善你的个人投资策略 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio 使忙碌的人们能够在不被追踪的情况下跟踪股票、ETF 或加密货币。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 229 + + + 360° View + 360° 视角 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Get the full picture of your personal finances across multiple platforms. + 跨多个平台全面了解您的个人财务状况。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 242 + + + Web3 Ready + Web3 就绪 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + 匿名使用 Ghostfolio 并拥有您的财务数据。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source + 开源 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. + 通过强大的社区不断改进,从中受益。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + 为什么使用Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 272 + + + Ghostfolio is for you if you are... + 如果您符合以下条件,那么 Ghostfolio 适合您... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 273 + + + trading stocks, ETFs or cryptocurrencies on multiple platforms + 在多个平台上交易股票、ETF 或加密货币 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 210 + apps/client/src/app/pages/landing/landing-page.html + 280 - - Ready to take your investments to the next level? - 准备好带走你的投资下一级 + + pursuing a buy & hold strategy + 采取买入并持有策略 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 286 + + + interested in getting insights of your portfolio composition + 有兴趣深入了解您的投资组合构成 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership + 重视隐私和数据所有权 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 296 + + + into minimalism + 进入极简主义 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 299 + + + caring about diversifying your financial resources + 关心您的财务资源多元化 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence + 对财务独立感兴趣 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 307 + + + saying no to spreadsheets in + 对电子表格说不 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list + 仍在阅读此列表 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 314 + + + Learn more about Ghostfolio + 了解有关 Ghostfolio 的更多信息 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 319 + + + What our users are saying + 我们的什么用户正在说 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + 来自世界各地的会员正在使用Ghostfolio 高级版 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + 如何幽灵作品集工作? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 383 + + + Get started in only 3 steps + 只需 3 步即可开始 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 386 + + + Sign up anonymously* + 匿名注册* - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 392 + + + * no e-mail address nor credit card required + * 无需电子邮件地址或信用卡 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 394 + + + Add any of your historical transactions + 添加您的任何历史交易 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 405 + + + Get valuable insights of your portfolio composition + 获取有关您的投资组合构成的宝贵见解 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 417 + + + Are you ready? + 准备好? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/landing/landing-page.html + 431 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + 在 Ghostfolio,透明度是我们价值观的核心。我们将源代码发布为开源软件(OSS)下AGPL-3.0许可证我们公开分享平台运营状态的汇总关键指标。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 6 + + + (Last 24 hours) + (最近 24 小时) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 37 + + + Active Users + 活跃用户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 40 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 62 + + + (Last 30 days) + (最近 30 天) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 59 + + + New Users + 新用户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 51 + + + Users in Slack community + Slack 社区的用户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 75 + + + Contributors on GitHub + GitHub 上的贡献者 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 89 + + + (Last 90 days) + (过去 90 天) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 127 + + + Uptime + 正常运行时间 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/open/open-page.html + 132 + + + Activities + 活动 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 39 + + + Do you really want to delete these activities? + 您真的要删除所有活动吗? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + libs/ui/src/lib/activities-table/activities-table.component.ts + 225 + + + Update activity + 更新活动 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + 股票、ETF、债券、加密货币、大宗商品 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + One-time fee, annual account fees + 一次性费用、年度账户费用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + 企业盈利分配 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Revenue for lending out money + 放贷收入 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Mortgages, personal loans, credit cards + 抵押贷款、个人贷款、信用卡 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + Luxury items, real estate, private companies + 奢侈品、房地产、私营公司 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + Account + 帐户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + libs/ui/src/lib/activities-table/activities-table.component.html + 307 + + + Update Cash Balance + 更新现金余额 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 + + + Unit Price + 单价 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 213 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 286 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + libs/ui/src/lib/activities-table/activities-table.component.html + 209 + + + Oops! Could not get the historical exchange rate from + 哎呀!无法从以下来源获取历史汇率 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 318 + + + Fee + 费用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 330 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + libs/ui/src/lib/activities-table/activities-table.component.html + 233 + + + Oops! Could not get the historical exchange rate from + 哎呀!无法获取历史汇率 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 240 + + + Import Activities + 导入活动 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 45 + + + Import Dividends + 导入股息 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 223 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 86 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - 使用 Ghostfolio 轻松跟踪、分析和可视化您的财富。 + + Importing data... + 正在导入数据... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 120 + + + Import has been completed + 导入已完成 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 128 + + + Validating data... + 验证数据... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 234 + + + Select Holding + 选择控股 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 + + + Select File + 选择文件 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 + + + Holding + 保持 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 + + + Load Dividends + 加载股息 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 + + + Choose or drop a file here + 在此处选择或放置文件 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 + + + The following file formats are supported: + 支持以下文件格式: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 + + + Select Dividends + 选择股息 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 + + + Select Activities + 选择活动 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 + + + Back + 后退 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 + + + Allocations + 分配 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 44 + + + Allocations + 分配 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 + + + Proportion of Net Worth + 占净资产的比例 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 + + + By Platform + 按平台 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 + + + By Currency + 按货币 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 63 + + + By Asset Class + 按资产类别 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 + + + By Holding + 通过持有 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 + + + By Sector + 按部门 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 + + + By Continent + 按大陆 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 + + + By Market + 按市场 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Regions + 区域 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 87 + + + Developed Markets + 发达市场 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 104 + + + Emerging Markets + 新兴市场 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 231 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 113 + + + Other Markets + 其他市场 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 122 + + + No data available + 无可用数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/public/public-page.html + 132 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + By Account + 按帐户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 + + + By ETF Provider + 按 ETF 提供商 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 + + + By Country + 按国家/地区 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 + + + Analysis + 分析 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts + 13 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/portfolio-page.component.ts + 34 + + + Dividend + 股息 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 38 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + libs/ui/src/lib/i18n.ts + 35 + + + Deposit + 订金 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 361 + + + Monthly + 每月 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 50 + + + Yearly + 每年 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 51 + + + Analysis + 分析 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 + + + Top + 顶部 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 166 + + + Bottom + 底部 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 215 + + + Portfolio Evolution + 投资组合演变 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 268 + + + Investment Timeline + 投资时间表 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 296 + + + Current Streak + 当前连胜 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 317 + + + Longest Streak + 最长连续纪录 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 326 + + + Dividend Timeline + 股息时间表 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 227 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 354 - - Get Started - 开始使用 + + FIRE + 财务独立 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page-routing.module.ts + 13 + + + FIRE + 财务独立 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 4 + + + Calculator + 计算器 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 + + + 4% Rule + 4%规则 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray 使用静态分析来识别您的投资组合中的潜在问题和风险。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 111 + + + Currency Cluster Risks + 货币集群风险 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 140 + + + Account Cluster Risks + 账户集群风险 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 158 + + + Holdings + 控股 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 77 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/components/home-holdings/home-holdings.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 14 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + libs/ui/src/lib/assistant/assistant.html + 46 + + + Pricing + 价钱 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 + + + Pricing Plans + 定价计划 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 4 + + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + 我们的官方 Ghostfolio Premium 云产品是最简单的入门方法。由于它节省了时间,这对于大多数人来说将是最佳选择。收入用于支付托管基础设施的成本和资助持续开发。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 6 + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + 如果你希望在自己的基础设施上运行 Ghostfolio,请查看源代码和进一步的说明GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 26 + + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + 适合喜欢在自己的基础设施上运行 Ghostfolio 的精通技术的投资者。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 38 + + + Unlimited Transactions + 无限交易 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 45 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 129 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 191 + + + Unlimited Accounts + 无限账户 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 49 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 195 + + + Portfolio Performance + 投资组合表现 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 137 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 199 + + + Data Import and Export + 数据导入与导出 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 73 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 141 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 219 + + + Community Support + 社区支持 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 90 + + + Self-hosted, update manually. + 自托管,手动更新。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 94 + + + Free + 自由的 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 95 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 153 + + + For new investors who are just getting started with trading. + 适合刚开始交易的新投资者。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 123 + + + Fully managed Ghostfolio cloud offering. + 完全托管的 Ghostfolio 云产品。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 244 + + + For ambitious investors who need the full picture of their financial assets. + 适合需要全面了解其金融资产的雄心勃勃的投资者。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 184 + + + Email and Chat Support + 电子邮件和聊天支持 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 240 + + + Renew Plan + 更新计划 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/components/header/header.component.html + 183 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 21 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 276 + + + One-time payment, no auto-renewal. + 一次性付款,无自动续订。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 280 + + + Get Started + 开始使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/landing/landing-page.html + 446 + + + It’s free. + 免费。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/pricing/pricing-page.html + 301 + + + Hello, has shared a Portfolio with you! + 你好,分享了一个文件夹与你! - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 4 + + + Currencies + 货币 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 32 + + + Continents + 大陆 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 68 + + + Ghostfolio empowers you to keep track of your wealth. + Ghostfolio 使您能够跟踪您的财富。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/public/public-page.html + 159 + + + Registration + 注册 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/register-page-routing.module.ts + 13 + + + Continue with Internet Identity + 继续互联网身份 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/register-page.html + 42 + + + Continue with Google + 继续使用谷歌 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/register-page.html + 53 + + + Copy to clipboard + 复制到剪贴板 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 26 + + + I agree to have stored my Security Token from above in a secure place. If I lose it, I cannot get my account back. + 我同意存储我的保安编码器从上面看,在一个安全的地方。如果我丢失了它,我将无法找回我的帐户。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 32 + + + Agree and continue + 同意并继续 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 232 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 45 - + Personal Finance Tools 个人理财工具 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 14 + + + open-source-alternative-to + 开源替代方案 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 26 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + Open Source Alternative to + 开源替代方案 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 27 + + + Discover Open Source Alternatives for Personal Finance Tools + 发现个人理财工具的开源替代品 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + 此概述页面包含与开源替代方案相比的精选个人理财工具集合Ghostfolio。如果您重视透明度、数据隐私和社区协作,Ghostfolio 提供了一个绝佳的机会来控制您的财务管理。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + 浏览下面的链接,将各种个人理财工具与 Ghostfolio 进行比较。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + 开源替代方案 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to + 开源替代方案 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + 您是否正在寻找开源替代方案幽灵作品集是一个强大的投资组合管理工具,为个人提供一个全面的平台来跟踪、分析和优化他们的投资。无论您是经验丰富的投资者还是刚刚起步的投资者,Ghostfolio 都提供直观的用户界面和广泛的功能帮助您做出明智的决定并掌控您的财务未来。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 13 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio 是一款开源软件 (OSS),提供了一种经济高效的替代方案使其特别适合预算紧张的个人,例如追求财务独立,提前退休(FIRE) 。通过利用开发者社区和个人理财爱好者的集体努力,Ghostfolio 不断增强其功能、安全性和用户体验。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 27 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + 让我们更深入地了解 Ghostfolio 与下面的比较表可帮助您全面了解 Ghostfolio 相对于其他产品的定位。我们将探讨功能、数据隐私、定价等各个方面,让您根据个人需求做出明智的选择。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 38 + + + Ghostfolio vs comparison table + Ghostfolio vs比较表 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 49 + + + Founded + 成立 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 72 + + + Origin + 来源 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Region + 地区 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Available in + 可用于 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 103 + + + ✅ Yes + ✅ 是的 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 131 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 138 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 150 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 169 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 176 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 188 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 + + + ❌ No + ❌ 没有 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 133 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 152 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 159 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 171 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 190 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 197 + + + ❌ No + ❌ 没有 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + Self-Hosting + 自托管 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 145 + + + Use anonymously + 匿名使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + Free Plan + 免费计划 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 183 + + + Starting from + 从...开始 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 204 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + year + - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 211 + + + Notes + 笔记 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with or any other product mentioned in the comparison. As the landscape of personal finance tools evolves, it is essential to verify any specific details or changes directly from the respective product page. Data needs a refresh? Help us maintain accurate data on GitHub. + 请注意,Ghostfolio 与 Ghostfolio 中提供的信息比较表基于我们的独立研究和分析。该网站不隶属于或比较中提到的任何其他产品。随着个人理财工具格局的不断发展,直接从相应的产品页面验证任何具体的细节或变化至关重要。数据需要刷新吗?帮助我们维护准确的数据GitHub - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 226 + + + Ready to take your investments to the next level? + 准备好带走你的投资下一级 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 239 + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + 使用 Ghostfolio 轻松跟踪、分析和可视化您的财富。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 243 + + + Get Started + 开始使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Personal Finance Tools + 个人理财工具 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 266 + + + Switzerland + 瑞士 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 60 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + libs/ui/src/lib/i18n.ts + 89 + + + Global + 全球的 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 61 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 308 + libs/ui/src/lib/i18n.ts + 16 - - Switzerland - 瑞士 + + Resources + 资源 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 77 + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 13 + + + Guides + 指南 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + apps/client/src/app/pages/resources/resources-page.html + 22 + + + Glossary + 词汇表 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 554 + apps/client/src/app/pages/resources/resources-page.html + 124 + + + Membership + 会员资格 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 614 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 23 - - - Global - 全球的 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 78 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 40 + + + Access + 使用权 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 346 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 28 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 477 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 46 + + + My Ghostfolio + 我的 Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 615 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 33 - - United States - 美国 + + Oops, authentication has failed. + 糟糕,身份验证失败。 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 98 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 + + + Try again + 再试一次 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 154 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 + + + Go back to Home Page + 返回首页 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 164 + apps/client/src/app/pages/webauthn/webauthn-page.html + 31 + + + Do you really want to delete this account balance? + 您确实要删除该帐户余额吗? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + Import Activities + 进口活动 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 225 + libs/ui/src/lib/activities-table/activities-table.component.html + 370 + + + Import Dividends + 导入股息 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + libs/ui/src/lib/activities-table/activities-table.component.html + 382 + + + Export Activities + 出口活动 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 299 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 321 + libs/ui/src/lib/activities-table/activities-table.component.html + 395 + + + Export Drafts as ICS + 将汇票导出为 ICS - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 332 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 357 + libs/ui/src/lib/activities-table/activities-table.component.html + 408 + + + Draft + 草稿 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 359 + libs/ui/src/lib/activities-table/activities-table.component.html + 144 + + + Clone + 克隆 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 369 + libs/ui/src/lib/activities-table/activities-table.component.html + 435 + + + Export Draft as ICS + 将汇票导出为 ICS - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 444 + libs/ui/src/lib/activities-table/activities-table.component.html + 445 + + + Do you really want to delete this activity? + 您确实要删除此活动吗? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 454 + libs/ui/src/lib/activities-table/activities-table.component.ts + 235 + + + Find holding... + 查找持有... - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 464 + libs/ui/src/lib/assistant/assistant.component.ts + 138 + + + No entries... + 没有条目... - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 542 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 565 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profiles + 资产概况 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 603 + libs/ui/src/lib/assistant/assistant.html + 67 + + + Index + 指数 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 625 + libs/ui/src/lib/benchmark/benchmark.component.html + 3 - - France - 法国 + + 50-Day Trend + 50 天趋势 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + 200-Day Trend + 200天趋势 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 497 + libs/ui/src/lib/benchmark/benchmark.component.html + 40 + + + Last All Time High + 上次历史最高纪录 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 522 + libs/ui/src/lib/benchmark/benchmark.component.html + 65 - - Poland - 波兰 + + Change from All Time High + 从历史最高点开始变化 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + libs/ui/src/lib/benchmark/benchmark.component.html + 81 - - Germany - 德国 + + from ATH + 来自 ATH - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 145 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + Market data provided by + 市场数据提供者 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month + 每月储蓄率 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 279 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate + 年利率 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 289 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + Retirement Date + 退休日期 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 310 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount + 预计总额 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 + + + Interest + 利息 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 390 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 371 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + libs/ui/src/lib/i18n.ts + 37 - - Belgium - 比利时 + + Savings + 储蓄 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 184 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 381 - - South Africa - 南非 + + Allocation + 分配 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 256 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - - - Austria - 奥地利 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 267 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 46 - - Italy - 意大利 + + Show all + 显示所有 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 401 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 - - Netherlands - 荷兰 + + Account + 帐户 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 411 + libs/ui/src/lib/i18n.ts + 4 - - Thailand - 泰国 + + Asia-Pacific + 亚太 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 433 + libs/ui/src/lib/i18n.ts + 5 - - New Zealand - 新西兰 + + Asset Class + 资产类别 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + libs/ui/src/lib/i18n.ts + 6 - - Czech Republic - 捷克共和国 - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 486 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 532 - + + Asset Sub Class + 资产子类别 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 575 + libs/ui/src/lib/i18n.ts + 7 - - Finland - 芬兰 + + Core + 核心 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 514 + libs/ui/src/lib/i18n.ts + 10 - - Canada - 加拿大 + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + 轻松切换到 Ghostfolio Premium 或 Ghostfolio Open Source - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 595 + libs/ui/src/lib/i18n.ts + 12 - - Resources - 资源 + + Switch to Ghostfolio Premium easily + 轻松切换到 Ghostfolio Premium - apps/client/src/app/pages/resources/resources-page-routing.module.ts + libs/ui/src/lib/i18n.ts 13 - - Guides - 指南 + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + 轻松切换到 Ghostfolio Open Source 或 Ghostfolio Basic - apps/client/src/app/pages/resources/resources-page.html - 22 + libs/ui/src/lib/i18n.ts + 14 - - Glossary - 词汇表 + + Emergency Fund + 应急基金 - apps/client/src/app/pages/resources/resources-page.html - 92 + libs/ui/src/lib/i18n.ts + 15 - - Membership - 会员资格 - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - + + Grant + 授予 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 40 + libs/ui/src/lib/i18n.ts + 17 - - Access - 使用权 - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - + + Higher Risk + 风险较高 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 46 + libs/ui/src/lib/i18n.ts + 18 - - My Ghostfolio - 我的 Ghostfolio + + This activity already exists. + 这项活动已经存在。 - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + libs/ui/src/lib/i18n.ts + 19 - - Oops, authentication has failed. - 糟糕,身份验证失败。 + + Japan + 日本 - apps/client/src/app/pages/webauthn/webauthn-page.html - 19 + libs/ui/src/lib/i18n.ts + 83 - - Try again - 再试一次 + + Lower Risk + 降低风险 - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 + libs/ui/src/lib/i18n.ts + 20 - - Go back to Home Page - 返回首页 + + Month + - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + libs/ui/src/lib/i18n.ts + 21 - - Do you really want to delete this account balance? - 您确实要删除该帐户余额吗? + + Months + 几个月 - libs/ui/src/lib/account-balances/account-balances.component.ts - 101 + libs/ui/src/lib/i18n.ts + 22 - - Import Activities - 进口活动 - - libs/ui/src/lib/activities-table/activities-table.component.html - 9 + + Other + 其他 + + libs/ui/src/lib/i18n.ts + 23 - libs/ui/src/lib/activities-table/activities-table.component.html - 370 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 403 - - Import Dividends - 导入股息 + + Preset + 预设 - libs/ui/src/lib/activities-table/activities-table.component.html - 29 + libs/ui/src/lib/i18n.ts + 24 + + + Retirement Provision + 退休金 - libs/ui/src/lib/activities-table/activities-table.component.html - 382 + libs/ui/src/lib/i18n.ts + 25 - - Export Activities - 出口活动 + + Satellite + 卫星 - libs/ui/src/lib/activities-table/activities-table.component.html - 41 + libs/ui/src/lib/i18n.ts + 26 + + + Symbol + 符号 - libs/ui/src/lib/activities-table/activities-table.component.html - 395 + libs/ui/src/lib/i18n.ts + 27 - - Export Drafts as ICS - 将汇票导出为 ICS + + Tag + 标签 - libs/ui/src/lib/activities-table/activities-table.component.html - 54 + libs/ui/src/lib/i18n.ts + 28 + + + Year + - libs/ui/src/lib/activities-table/activities-table.component.html - 408 + libs/ui/src/lib/i18n.ts + 29 - - Draft - 草稿 + + Years + - libs/ui/src/lib/activities-table/activities-table.component.html - 144 + libs/ui/src/lib/i18n.ts + 30 - - Clone - 克隆 + + Buy + - libs/ui/src/lib/activities-table/activities-table.component.html - 435 + libs/ui/src/lib/i18n.ts + 34 - - Export Draft as ICS - 将汇票导出为 ICS + + Fee + 费用 - libs/ui/src/lib/activities-table/activities-table.component.html - 445 + libs/ui/src/lib/i18n.ts + 36 - - Do you really want to delete this activity? - 您确实要删除此活动吗? + + Valuable + 有价值的 - libs/ui/src/lib/activities-table/activities-table.component.ts - 226 + libs/ui/src/lib/i18n.ts + 38 - - Find holding... - 查找持有... + + Liability + 责任 - libs/ui/src/lib/assistant/assistant.component.ts - 138 + libs/ui/src/lib/i18n.ts + 39 - - No entries... - 没有条目... + + Sell + - libs/ui/src/lib/assistant/assistant.html - 63 + libs/ui/src/lib/i18n.ts + 40 + + + Cash + 现金 - libs/ui/src/lib/assistant/assistant.html - 84 + libs/ui/src/lib/i18n.ts + 43 - - Asset Profiles - 资产概况 + + Commodity + 商品 - libs/ui/src/lib/assistant/assistant.html - 67 + libs/ui/src/lib/i18n.ts + 44 - - Index - 指数 + + Equity + 公平 - libs/ui/src/lib/benchmark/benchmark.component.html - 3 + libs/ui/src/lib/i18n.ts + 45 - - 50-Day Trend - 50 天趋势 + + Fixed Income + 固定收入 - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + libs/ui/src/lib/i18n.ts + 46 - - 200-Day Trend - 200天趋势 + + Real Estate + 房地产 - libs/ui/src/lib/benchmark/benchmark.component.html - 40 + libs/ui/src/lib/i18n.ts + 48 - - Last All Time High - 上次历史最高纪录 + + Bond + 纽带 - libs/ui/src/lib/benchmark/benchmark.component.html - 65 + libs/ui/src/lib/i18n.ts + 51 - - Change from All Time High - 从历史最高点开始变化 + + Cryptocurrency + 加密货币 - libs/ui/src/lib/benchmark/benchmark.component.html - 81 + libs/ui/src/lib/i18n.ts + 52 - - from ATH - 来自 ATH + + ETF + 交易所交易基金 - libs/ui/src/lib/benchmark/benchmark.component.html - 83 + libs/ui/src/lib/i18n.ts + 53 - - Market data provided by - 市场数据提供者 + + Mutual Fund + 共同基金 - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + libs/ui/src/lib/i18n.ts + 54 - - Savings Rate per Month - 每月储蓄率 + + Precious Metal + 贵金属 - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + libs/ui/src/lib/i18n.ts + 55 - - Annual Interest Rate - 年利率 + + Private Equity + 私人产权 - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/i18n.ts + 56 - - Retirement Date - 退休日期 + + Stock + 库存 - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/i18n.ts + 57 - - Projected Total Amount - 预计总额 + + Africa + 非洲 - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 + libs/ui/src/lib/i18n.ts + 64 - - Interest - 利息 + + Asia + 亚洲 - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 367 + libs/ui/src/lib/i18n.ts + 65 + + + Europe + 欧洲 libs/ui/src/lib/i18n.ts - 34 + 66 - - Savings - 储蓄 + + North America + 北美 - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + libs/ui/src/lib/i18n.ts + 67 - - Allocation - 分配 + + Oceania + 大洋洲 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/i18n.ts + 68 - - Show all - 显示所有 + + South America + 南美洲 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/i18n.ts + 69 - - Account - 帐户 + + Extreme Fear + 极度恐惧 libs/ui/src/lib/i18n.ts - 4 + 94 - - Asia-Pacific - 亚太 + + Extreme Greed + 极度贪婪 libs/ui/src/lib/i18n.ts - 5 + 95 - - Asset Class - 资产类别 + + Neutral + 中性的 libs/ui/src/lib/i18n.ts - 6 + 98 - - Asset Sub Class - 资产子类别 + + Membership + 会员资格 - libs/ui/src/lib/i18n.ts - 7 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Core - 核心 + + Valid until + 有效期至 - libs/ui/src/lib/i18n.ts - 9 + libs/ui/src/lib/membership-card/membership-card.component.html + 23 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - 轻松切换到 Ghostfolio Premium 或 Ghostfolio Open Source + + Time to add your first activity. + 是时候添加您的第一个活动了。 - libs/ui/src/lib/i18n.ts - 10 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - Switch to Ghostfolio Premium easily - 轻松切换到 Ghostfolio Premium + + No data available + 无可用数据 - libs/ui/src/lib/i18n.ts - 11 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 405 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 418 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - 轻松切换到 Ghostfolio Open Source 或 Ghostfolio Basic + + If a translation is missing, kindly support us in extending it here. + 如果翻译缺失,请支持我们进行扩展这里 - libs/ui/src/lib/i18n.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 50 - - Emergency Fund - 应急基金 + + Date Range + 日期范围 - libs/ui/src/lib/i18n.ts - 13 + libs/ui/src/lib/assistant/assistant.html + 93 - - Grant - 授予 + + The current market price is + 当前市场价格为 - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 345 - - Higher Risk - 风险较高 + + Test + 测试 - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 322 - - This activity already exists. - 这项活动已经存在。 + + Oops! Could not grant access. + 哎呀!无法授予访问权限。 - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Japan - 日本 + + Restricted view + 视野受限 - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/components/access-table/access-table.component.html + 26 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - Lower Risk - 降低风险 + + Permission + 允许 - libs/ui/src/lib/i18n.ts + apps/client/src/app/components/access-table/access-table.component.html 18 - - - Month - - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 33 - - Months - 几个月 + + Private + 私人的 - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Other - 其他 + + Job Queue + 作业队列 - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/pages/admin/admin-page-routing.module.ts + 25 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 389 + apps/client/src/app/pages/admin/admin-page.component.ts + 42 - - Preset - 预设 + + Market data is delayed for + 市场数据延迟 - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 86 - - Retirement Provision - 退休金 + + Absolute Currency Performance + 绝对货币表现 - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 72 - - Satellite - 卫星 + + Absolute Net Performance + 绝对净性能 - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 119 - - Symbol - 符号 + + Absolute Asset Performance + 绝对资产绩效 - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 29 + + + + Investment + 投资 + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 42 + + + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 89 - - Tag - 标签 + + Asset Performance + 资产绩效 - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 50 - - Year - + + Net Performance + 净绩效 - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 138 - - Years - + + Currency Performance + 货币表现 - libs/ui/src/lib/i18n.ts - 28 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 96 - - Buy - + + Year to date + 今年迄今为止 - libs/ui/src/lib/i18n.ts - 31 + libs/ui/src/lib/assistant/assistant.component.ts + 225 - - Fee - 费用 + + Week to date + 本周至今 - libs/ui/src/lib/i18n.ts - 33 + libs/ui/src/lib/assistant/assistant.component.ts + 217 - - Valuable - 有价值的 + + Month to date + 本月至今 - libs/ui/src/lib/i18n.ts - 35 + libs/ui/src/lib/assistant/assistant.component.ts + 221 - - Liability - 责任 + + MTD + 最大输运量 - libs/ui/src/lib/i18n.ts - 36 + libs/ui/src/lib/assistant/assistant.component.ts + 221 - - Sell - + + WTD + 世界贸易组织 - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 217 - - Cash - 现金 + + Oops! A data provider is experiencing the hiccups. + 哎呀!数据提供商遇到了问题。 - libs/ui/src/lib/i18n.ts - 40 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Commodity - 商品 + + View + 看法 - libs/ui/src/lib/i18n.ts - 41 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - Equity - 公平 - libs/ui/src/lib/i18n.ts - 42 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 38 - - Fixed Income - 固定收入 + + Reset Filters + 重置过滤器 - libs/ui/src/lib/i18n.ts - 43 + libs/ui/src/lib/assistant/assistant.html + 155 - - Real Estate - 房地产 + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + 如果你今天退休,你可以领取每年或者每月,根据您的总资产提款率为4%。 - libs/ui/src/lib/i18n.ts - 45 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Bond - 纽带 + + year + - libs/ui/src/lib/i18n.ts - 48 + libs/ui/src/lib/assistant/assistant.component.ts + 229 - - Cryptocurrency - 加密货币 + + years + - libs/ui/src/lib/i18n.ts - 49 + libs/ui/src/lib/assistant/assistant.component.ts + 250 - - ETF - 交易所交易基金 + + Apply Filters + 应用过滤器 - libs/ui/src/lib/i18n.ts - 50 + libs/ui/src/lib/assistant/assistant.html + 165 - - Mutual Fund - 共同基金 + + Asset Classes + 资产类别 - libs/ui/src/lib/i18n.ts - 51 + libs/ui/src/lib/assistant/assistant.html + 138 - - Precious Metal - 贵金属 + + self-hosting + 自托管 - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/faq/faq-page.component.ts + 48 - - Private Equity - 私人产权 + + FAQ + 常见问题 - libs/ui/src/lib/i18n.ts - 53 + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - - - Stock - 库存 - libs/ui/src/lib/i18n.ts - 54 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 - - Africa - 非洲 + + Self-Hosting + 自托管 - libs/ui/src/lib/i18n.ts - 61 + apps/client/src/app/pages/faq/faq-page.component.ts + 47 - - - Asia - 亚洲 - libs/ui/src/lib/i18n.ts - 62 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts + 13 - - Europe - 欧洲 + + Data Gathering + 数据收集 - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/components/admin-overview/admin-overview.html + 136 - - North America - 北美 + + General + 一般的 - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/faq/faq-page.component.ts + 36 - - Oceania - 大洋洲 + + Cloud + - libs/ui/src/lib/i18n.ts - 65 + apps/client/src/app/pages/faq/faq-page.component.ts + 41 + + + apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts + 13 - - South America - 南美洲 + + Oops! It looks like you’re making too many requests. Please slow down a bit. + 哎呀!看来您提出了太多要求。请慢一点。 - libs/ui/src/lib/i18n.ts - 66 + apps/client/src/app/core/http-response.interceptor.ts + 96 - - Extreme Fear - 极度恐惧 + + My Account + 我的账户 - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Extreme Greed - 极度贪婪 + + Closed + 关闭 - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 39 - - Neutral - 中性的 + + Active + 积极的 - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Membership - 会员资格 + + Activity + 活动 - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 223 - - Valid until - 有效期至 + + Dividend Yield + Dividend Yield - libs/ui/src/lib/membership-card/membership-card.component.html - 23 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 191 - - Time to add your first activity. - 是时候添加您的第一个活动了。 + + Execute Job + Execute Job - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 174 - - No data available - 无可用数据 + + Priority + Priority - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 391 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 62 + + + This action is not allowed. + This action is not allowed. - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 404 + apps/client/src/app/core/http-response.interceptor.ts + 61 - - If a translation is missing, kindly support us in extending it here. - 如果翻译缺失,请支持我们进行扩展这里 + + Liquidity + Liquidity - apps/client/src/app/components/user-account-settings/user-account-settings.html - 55 + libs/ui/src/lib/i18n.ts + 47 - - Date Range - 日期范围 + + Change with currency effect + Change with currency effect - libs/ui/src/lib/assistant/assistant.html - 93 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 53 - - The current market price is - 当前市场价格为 + + Performance with currency effect + Performance with currency effect - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 336 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 81 - - Test - 测试 + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 320 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Oops! Could not grant access. - 哎呀!无法授予访问权限。 + + Buy and sell + Buy and sell - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 88 + libs/ui/src/lib/i18n.ts + 8 - - Restricted view - 视野受限 + + Delete Activities + Delete Activities - apps/client/src/app/components/access-table/access-table.component.html - 25 + libs/ui/src/lib/activities-table/activities-table.component.html + 66 + + + Internationalization + Internationalization - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/app-routing.module.ts + 79 - - Permission - 允许 + + Do you really want to close your Ghostfolio account? + Do you really want to close your Ghostfolio account? - apps/client/src/app/components/access-table/access-table.component.html - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + Danger Zone + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 33 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 244 - - Private - 私人的 + + Close Account + Close Account - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - Job Queue - 作业队列 + + By ETF Holding + By ETF Holding - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - apps/client/src/app/pages/admin/admin-page.component.ts - 42 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Market data is delayed for - 市场数据延迟 + + Join now or check out the example account + Join now or check out the example account - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 81 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Absolute Currency Performance - 绝对货币表现 + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 73 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 308 - - Absolute Net Performance - 绝对净性能 + + Show more + Show more - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 121 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 81 - - Absolute Asset Performance - 绝对资产绩效 + + Benchmarks + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 80 - - Investment - 投资 + + Delete Profiles + Delete Profiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 42 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 190 + + + Do you really want to delete these profiles? + Do you really want to delete these profiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 65 - - Asset Performance - 资产绩效 + + Oops! Could not delete profiles. + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 51 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 52 - - Net Performance - 净绩效 + + Table + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 140 + apps/client/src/app/components/home-holdings/home-holdings.html + 17 - - Currency Performance - 货币表现 + + Chart + Chart - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 98 + apps/client/src/app/components/home-holdings/home-holdings.html + 20 - - Year to date - 今年迄今为止 + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - libs/ui/src/lib/assistant/assistant.component.ts - 225 + apps/client/src/app/pages/public/public-page.html + 155 - - Week to date - 本周至今 + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Month to date - 本月至今 + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 221 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - MTD - 最大输运量 - - libs/ui/src/lib/assistant/assistant.component.ts - 221 + + Budgeting + Budgeting + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 85 - - WTD - 世界贸易组织 + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 217 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Oops! A data provider is experiencing the hiccups. - 哎呀!数据提供商遇到了问题。 + + Family Office + Family Office - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - View - 看法 + + Investor + Investor - apps/client/src/app/components/access-table/access-table.component.html - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 + + + Open Source + Open Source - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Reset Filters - 重置过滤器 + + Personal Finance + Personal Finance - libs/ui/src/lib/assistant/assistant.html - 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - 如果你今天退休,你可以领取每年或者每月,根据您的总资产提款率为4%。 + + Privacy + Privacy - apps/client/src/app/pages/portfolio/fire/fire-page.html - 68 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year - + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 229 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - years - + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 250 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Apply Filters - 应用过滤器 + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.html - 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 98 - - Asset Classes - 资产类别 + + Wealth + Wealth - libs/ui/src/lib/assistant/assistant.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 99 - - self-hosting - 自托管 + + Wealth Management + Wealth Management - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 100 - - FAQ - 常见问题 + + Australia + Australia - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 72 + + + Austria + Austria - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 73 - - Self-Hosting - 自托管 + + Belgium + Belgium - apps/client/src/app/pages/faq/faq-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 74 + + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 75 - - Data Gathering - 数据收集 + + Canada + Canada - apps/client/src/app/components/admin-overview/admin-overview.html - 134 + libs/ui/src/lib/i18n.ts + 76 - - General - 一般的 + + Czech Republic + Czech Republic - apps/client/src/app/pages/faq/faq-page.component.ts - 36 + libs/ui/src/lib/i18n.ts + 77 - - Cloud - + + Finland + Finland - apps/client/src/app/pages/faq/faq-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 78 + + + France + France - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - 哎呀!看来您提出了太多要求。请慢一点。 + + Germany + Germany - apps/client/src/app/core/http-response.interceptor.ts - 107 + libs/ui/src/lib/i18n.ts + 80 - - My Account - 我的账户 + + India + India - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 81 - - Closed - 关闭 + + Italy + Italy - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 26 + libs/ui/src/lib/i18n.ts + 82 - - Active - 积极的 + + Netherlands + Netherlands - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 25 + libs/ui/src/lib/i18n.ts + 84 - - Activity - 活动 + + New Zealand + New Zealand - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 219 + libs/ui/src/lib/i18n.ts + 85 - - Dividend Yield - Dividend Yield + + Poland + Poland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + libs/ui/src/lib/i18n.ts + 86 - - Execute Job - Execute Job + + Romania + Romania - apps/client/src/app/components/admin-jobs/admin-jobs.html - 183 + libs/ui/src/lib/i18n.ts + 87 - - Priority - Priority + + South Africa + South Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 63 + libs/ui/src/lib/i18n.ts + 88 - - This action is not allowed. - This action is not allowed. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 70 + libs/ui/src/lib/i18n.ts + 90 - - Liquidity - Liquidity + + United States + United States libs/ui/src/lib/i18n.ts - 44 + 91 - - Change with currency effect - Change with currency effect + + Error + Error - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 336 - - Performance with currency effect - Performance with currency effect + + Deactivate + Deactivate - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 79 + apps/client/src/app/components/rule/rule.component.html + 67 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Activate + Activate - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 69 - - Buy and sell - Buy and sell + + Inactive + Inactive + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 194 + + + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 8 + 9 - - Delete Activities - Delete Activities + + Close + Close - libs/ui/src/lib/activities-table/activities-table.component.html - 66 + libs/ui/src/lib/i18n.ts + 11 - - Internationalization - Internationalization + + Yes + Yes - apps/client/src/app/app-routing.module.ts - 79 + libs/ui/src/lib/i18n.ts + 31 diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index ce18789b2..1f068da1b 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -214,17 +214,7 @@ body { } } - .mat-mdc-menu-panel { - &.assistant { - max-width: unset !important; - - .mat-mdc-menu-content { - padding: 0; - } - } - } - - &.is-dark-theme { + &.theme-dark { background: var(--dark-background); color: rgba(var(--light-primary-text)); @@ -366,8 +356,8 @@ ngx-skeleton-loader { } .cdk-overlay-container { - .cdk-overlay-pane { - max-width: 95vw !important; + .cdk-global-overlay-wrapper { + justify-content: center !important; } } @@ -453,6 +443,14 @@ ngx-skeleton-loader { } .mat-mdc-menu-panel { + &.assistant { + max-width: unset !important; + + .mat-mdc-menu-content { + padding: 0; + } + } + .mat-mdc-menu-item { &.font-weight-bold { .mat-mdc-menu-item-text { @@ -509,6 +507,10 @@ ngx-skeleton-loader { min-width: unset !important; } +.overflow-x-auto { + overflow-x: auto; +} + .page { display: flex; flex-direction: column; diff --git a/apps/client/src/styles/theme.scss b/apps/client/src/styles/theme.scss index cc9b164e6..f437ec676 100644 --- a/apps/client/src/styles/theme.scss +++ b/apps/client/src/styles/theme.scss @@ -3,7 +3,7 @@ $dark-primary-text: rgba(black, 0.87); $light-primary-text: white; -$mat-css-dark-theme-selector: '.is-dark-theme'; +$mat-css-dark-theme-selector: '.theme-dark'; $gf-primary: ( 50: var(--gf-theme-primary-50), @@ -71,42 +71,42 @@ $gf-secondary: ( ) ); -$gf-typography: mat.define-typography-config(); - -@include mat.core(); +$gf-typography: mat.m2-define-typography-config(); // Create default theme -$gf-theme-default: mat.define-light-theme( +$gf-theme-default: mat.m2-define-light-theme( ( color: ( - primary: mat.define-palette($gf-primary), - accent: mat.define-palette($gf-secondary, 500, 900, A100) + accent: mat.m2-define-palette($gf-secondary, 500, 900, A100), + primary: mat.m2-define-palette($gf-primary) ), density: -3, typography: $gf-typography ) ); + @include mat.all-component-themes($gf-theme-default); -@include mat.button-density(0); -@include mat.table-density(-1); // Create dark theme -$gf-theme-dark: mat.define-dark-theme( +$gf-theme-dark: mat.m2-define-dark-theme( ( color: ( - primary: mat.define-palette($gf-primary), - accent: mat.define-palette($gf-secondary, 500, 900, A100) + accent: mat.m2-define-palette($gf-secondary, 500, 900, A100), + primary: mat.m2-define-palette($gf-primary) ), density: -3, typography: $gf-typography ) ); -.is-dark-theme { + +.theme-dark { @include mat.all-component-colors($gf-theme-dark); - @include mat.button-density(0); - @include mat.table-density(-1); } +@include mat.button-density(0); +@include mat.core(); +@include mat.table-density(-1); + :root { --gf-theme-alpha-hover: 0.04; --gf-theme-primary-500: #36cfcc; diff --git a/docker/docker-compose.build.yml b/docker/docker-compose.build.yml index 7ad52be7d..636d9a4e3 100644 --- a/docker/docker-compose.build.yml +++ b/docker/docker-compose.build.yml @@ -1,4 +1,3 @@ -version: '3.9' services: ghostfolio: build: ../ @@ -7,7 +6,6 @@ services: - ../.env environment: DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer - NODE_ENV: production REDIS_HOST: redis REDIS_PASSWORD: ${REDIS_PASSWORD} ports: @@ -22,8 +20,9 @@ services: interval: 10s timeout: 5s retries: 5 + postgres: - image: postgres:15 + image: docker.io/library/postgres:15 env_file: - ../.env healthcheck: @@ -33,8 +32,9 @@ services: retries: 5 volumes: - postgres:/var/lib/postgresql/data + redis: - image: redis:alpine + image: docker.io/library/redis:alpine env_file: - ../.env command: ['redis-server', '--requirepass', $REDIS_PASSWORD] diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index a61359a53..91f8f2c09 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -1,7 +1,6 @@ -version: '3.9' services: postgres: - image: postgres:15 + image: docker.io/library/postgres:15 container_name: postgres restart: unless-stopped env_file: @@ -10,8 +9,9 @@ services: - ${POSTGRES_PORT:-5432}:5432 volumes: - postgres:/var/lib/postgresql/data + redis: - image: redis:alpine + image: docker.io/library/redis:alpine container_name: redis restart: unless-stopped env_file: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index d2dbb8112..0d2166ba8 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,13 +1,15 @@ -version: '3.9' services: ghostfolio: - image: ghostfolio/ghostfolio:latest + image: docker.io/ghostfolio/ghostfolio:latest init: true + cap_drop: + - ALL + security_opt: + - no-new-privileges:true env_file: - ../.env environment: DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer - NODE_ENV: production REDIS_HOST: redis REDIS_PASSWORD: ${REDIS_PASSWORD} ports: @@ -22,8 +24,19 @@ services: interval: 10s timeout: 5s retries: 5 + postgres: - image: postgres:15 + image: docker.io/library/postgres:15 + cap_drop: + - ALL + cap_add: + - CHOWN + - DAC_READ_SEARCH + - FOWNER + - SETGID + - SETUID + security_opt: + - no-new-privileges:true env_file: - ../.env healthcheck: @@ -33,8 +46,14 @@ services: retries: 5 volumes: - postgres:/var/lib/postgresql/data + redis: - image: redis:alpine + image: docker.io/library/redis:alpine + user: '999:1000' + cap_drop: + - ALL + security_opt: + - no-new-privileges:true env_file: - ../.env command: ['redis-server', '--requirepass', $REDIS_PASSWORD] diff --git a/git-hooks/pre-commit b/git-hooks/pre-commit index 673b3ba68..b2b86eac1 100755 --- a/git-hooks/pre-commit +++ b/git-hooks/pre-commit @@ -1,11 +1,11 @@ #!/bin/bash -# Will check if "yarn format" is run before executing. +# Will check if "npm run format" is run before executing. # Called by "git commit" with no arguments. The hook should # exit with non-zero status after issuing an appropriate message if # it wants to stop the commit. -echo "Running yarn format" +echo "Running npm run format" # Run the command and loop over its output FILES_TO_STAGE="" @@ -14,13 +14,13 @@ while IFS= read -r line; do # Process each line here ((i++)) if [ $i -le 2 ]; then - continue + continue fi if [[ $line == Done* ]]; then - break + break fi FILES_TO_STAGE="$FILES_TO_STAGE $line" -done < <(yarn format ) +done < <(npm run format) git add $FILES_TO_STAGE echo "Files formatted. Committing..." diff --git a/libs/common/src/lib/calculation-helper.spec.ts b/libs/common/src/lib/calculation-helper.spec.ts new file mode 100644 index 000000000..69621ec0a --- /dev/null +++ b/libs/common/src/lib/calculation-helper.spec.ts @@ -0,0 +1,50 @@ +import { Big } from 'big.js'; + +import { getAnnualizedPerformancePercent } from './calculation-helper'; + +describe('CalculationHelper', () => { + describe('annualized performance percentage', () => { + it('Get annualized performance', async () => { + expect( + getAnnualizedPerformancePercent({ + daysInMarket: NaN, // differenceInDays of date-fns returns NaN for the same day + netPerformancePercentage: new Big(0) + }).toNumber() + ).toEqual(0); + + expect( + getAnnualizedPerformancePercent({ + daysInMarket: 0, + netPerformancePercentage: new Big(0) + }).toNumber() + ).toEqual(0); + + /** + * Source: https://www.readyratios.com/reference/analysis/annualized_rate.html + */ + expect( + getAnnualizedPerformancePercent({ + daysInMarket: 65, // < 1 year + netPerformancePercentage: new Big(0.1025) + }).toNumber() + ).toBeCloseTo(0.729705); + + expect( + getAnnualizedPerformancePercent({ + daysInMarket: 365, // 1 year + netPerformancePercentage: new Big(0.05) + }).toNumber() + ).toBeCloseTo(0.05); + + /** + * Source: https://www.investopedia.com/terms/a/annualized-total-return.asp#annualized-return-formula-and-calculation + */ + expect( + getAnnualizedPerformancePercent({ + daysInMarket: 575, // > 1 year + netPerformancePercentage: new Big(0.2374) + }).toNumber() + ).toBeCloseTo(0.145); + }); + }); +}); diff --git a/libs/common/src/lib/calculation-helper.ts b/libs/common/src/lib/calculation-helper.ts new file mode 100644 index 000000000..4292f2383 --- /dev/null +++ b/libs/common/src/lib/calculation-helper.ts @@ -0,0 +1,79 @@ +import { Big } from 'big.js'; +import { + endOfDay, + endOfYear, + max, + startOfMonth, + startOfWeek, + startOfYear, + subDays, + subYears +} from 'date-fns'; +import { isNumber } from 'lodash'; + +import { resetHours } from './helper'; +import { DateRange } from './types'; + +export function getAnnualizedPerformancePercent({ + daysInMarket, + netPerformancePercentage +}: { + daysInMarket: number; + netPerformancePercentage: Big; +}): Big { + if (isNumber(daysInMarket) && daysInMarket > 0) { + const exponent = new Big(365).div(daysInMarket).toNumber(); + + return new Big( + Math.pow(netPerformancePercentage.plus(1).toNumber(), exponent) + ).minus(1); + } + + return new Big(0); +} + +export function getIntervalFromDateRange( + aDateRange: DateRange, + portfolioStart = new Date(0) +) { + let endDate = endOfDay(new Date()); + let startDate = portfolioStart; + + switch (aDateRange) { + case '1d': + startDate = max([startDate, subDays(resetHours(new Date()), 1)]); + break; + case 'mtd': + startDate = max([ + startDate, + subDays(startOfMonth(resetHours(new Date())), 1) + ]); + break; + case 'wtd': + startDate = max([ + startDate, + subDays(startOfWeek(resetHours(new Date()), { weekStartsOn: 1 }), 1) + ]); + break; + case 'ytd': + startDate = max([ + startDate, + subDays(startOfYear(resetHours(new Date())), 1) + ]); + break; + case '1y': + startDate = max([startDate, subYears(resetHours(new Date()), 1)]); + break; + case '5y': + startDate = max([startDate, subYears(resetHours(new Date()), 5)]); + break; + case 'max': + break; + default: + // '2024', '2023', '2022', etc. + endDate = endOfYear(new Date(aDateRange)); + startDate = max([startDate, new Date(aDateRange)]); + } + + return { endDate, startDate }; +} diff --git a/libs/common/src/lib/class-transformer.ts b/libs/common/src/lib/class-transformer.ts index bd9db22da..328e2bf9e 100644 --- a/libs/common/src/lib/class-transformer.ts +++ b/libs/common/src/lib/class-transformer.ts @@ -1,5 +1,21 @@ import { Big } from 'big.js'; +export function transformToMapOfBig({ + value +}: { + value: { [key: string]: string }; +}): { + [key: string]: Big; +} { + const mapOfBig: { [key: string]: Big } = {}; + + for (const key in value) { + mapOfBig[key] = new Big(value[key]); + } + + return mapOfBig; +} + export function transformToBig({ value }: { value: string }): Big { if (value === null) { return null; diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index c89143d9d..50c02ae20 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -41,7 +41,7 @@ export const DEFAULT_CURRENCY = 'USD'; export const DEFAULT_DATE_FORMAT_MONTH_YEAR = 'MMM yyyy'; export const DEFAULT_LANGUAGE_CODE = 'en'; export const DEFAULT_PAGE_SIZE = 50; -export const DEFAULT_ROOT_URL = 'http://localhost:4200'; +export const DEFAULT_ROOT_URL = 'https://localhost:4200'; // USX is handled separately export const DERIVED_CURRENCIES = [ @@ -88,7 +88,9 @@ export const HEADER_KEY_IMPERSONATION = 'Impersonation-Id'; export const HEADER_KEY_TIMEZONE = 'Timezone'; export const HEADER_KEY_TOKEN = 'Authorization'; -export const MAX_CHART_ITEMS = 365; +export const MAX_TOP_HOLDINGS = 50; + +export const NUMERICAL_PRECISION_THRESHOLD = 100000; export const PROPERTY_BENCHMARKS = 'BENCHMARKS'; export const PROPERTY_BETTER_UPTIME_MONITOR_ID = 'BETTER_UPTIME_MONITOR_ID'; @@ -129,6 +131,7 @@ export const REPLACE_NAME_PARTS = [ ]; export const SUPPORTED_LANGUAGE_CODES = [ + 'ca', 'de', 'en', 'es', diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index e03ea1a1f..689150b68 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -11,10 +11,15 @@ import { parseISO, subDays } from 'date-fns'; -import { de, es, fr, it, nl, pl, pt, tr, zhCN } from 'date-fns/locale'; +import { ca, de, es, fr, it, nl, pl, pt, tr, zhCN } from 'date-fns/locale'; -import { ghostfolioScraperApiSymbolPrefix, locale } from './config'; -import { Benchmark, UniqueAsset } from './interfaces'; +import { + DEFAULT_CURRENCY, + DERIVED_CURRENCIES, + ghostfolioScraperApiSymbolPrefix, + locale +} from './config'; +import { AssetProfileIdentifier, Benchmark } from './interfaces'; import { BenchmarkTrend, ColorScheme } from './types'; export const DATE_FORMAT = 'yyyy-MM-dd'; @@ -142,7 +147,10 @@ export function getAllActivityTypes(): ActivityType[] { return Object.values(ActivityType); } -export function getAssetProfileIdentifier({ dataSource, symbol }: UniqueAsset) { +export function getAssetProfileIdentifier({ + dataSource, + symbol +}: AssetProfileIdentifier) { return `${dataSource}-${symbol}`; } @@ -161,8 +169,14 @@ export function getCssVariable(aCssVariable: string) { ); } +export function getCurrencyFromSymbol(aSymbol = '') { + return aSymbol.replace(DEFAULT_CURRENCY, ''); +} + export function getDateFnsLocale(aLanguageCode: string) { - if (aLanguageCode === 'de') { + if (aLanguageCode === 'ca') { + return ca; + } else if (aLanguageCode === 'de') { return de; } else if (aLanguageCode === 'es') { return es; @@ -322,11 +336,25 @@ export function interpolate(template: string, context: any) { }); } -export function isCurrency(aSymbol = '') { - return currencies[aSymbol]; +export function isCurrency(aCurrency = '') { + return currencies[aCurrency] || isDerivedCurrency(aCurrency); } -export function parseDate(date: string): Date | null { +export function isDerivedCurrency(aCurrency: string) { + if (aCurrency === 'USX') { + return true; + } + + return DERIVED_CURRENCIES.find(({ currency }) => { + return currency === aCurrency; + }); +} + +export function parseDate(date: string): Date { + if (!date) { + return undefined; + } + // Transform 'yyyyMMdd' format to supported format by parse function if (date?.length === 8) { const match = date.match(/^(\d{4})(\d{2})(\d{2})$/); @@ -356,7 +384,7 @@ export function parseDate(date: string): Date | null { return parseISO(date); } -export function parseSymbol({ dataSource, symbol }: UniqueAsset) { +export function parseSymbol({ dataSource, symbol }: AssetProfileIdentifier) { const [ticker, exchange] = symbol.split('.'); return { diff --git a/libs/common/src/lib/interfaces/admin-data.interface.ts b/libs/common/src/lib/interfaces/admin-data.interface.ts index 2c6a5c501..6b139026b 100644 --- a/libs/common/src/lib/interfaces/admin-data.interface.ts +++ b/libs/common/src/lib/interfaces/admin-data.interface.ts @@ -1,13 +1,13 @@ -import { Role } from '@prisma/client'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; -import { UniqueAsset } from './unique-asset.interface'; +import { Role } from '@prisma/client'; export interface AdminData { exchangeRates: ({ label1: string; label2: string; value: number; - } & UniqueAsset)[]; + } & AssetProfileIdentifier)[]; settings: { [key: string]: boolean | object | string | string[] }; transactionCount: number; userCount: number; diff --git a/libs/common/src/lib/interfaces/admin-market-data.interface.ts b/libs/common/src/lib/interfaces/admin-market-data.interface.ts index 8c27ca27a..106ea0900 100644 --- a/libs/common/src/lib/interfaces/admin-market-data.interface.ts +++ b/libs/common/src/lib/interfaces/admin-market-data.interface.ts @@ -6,15 +6,16 @@ export interface AdminMarketData { } export interface AdminMarketDataItem { - activitiesCount?: number; + activitiesCount: number; assetClass?: AssetClass; assetSubClass?: AssetSubClass; countriesCount: number; currency: string; dataSource: DataSource; - date?: Date; + date: Date; id: string; isBenchmark?: boolean; + isUsedByUsersWithSubscription?: boolean; marketDataItemCount: number; name: string; sectorsCount: number; diff --git a/libs/common/src/lib/interfaces/unique-asset.interface.ts b/libs/common/src/lib/interfaces/asset-profile-identifier.interface.ts similarity index 68% rename from libs/common/src/lib/interfaces/unique-asset.interface.ts rename to libs/common/src/lib/interfaces/asset-profile-identifier.interface.ts index 745a0d9a7..48fc18c2f 100644 --- a/libs/common/src/lib/interfaces/unique-asset.interface.ts +++ b/libs/common/src/lib/interfaces/asset-profile-identifier.interface.ts @@ -1,6 +1,6 @@ import { DataSource } from '@prisma/client'; -export interface UniqueAsset { +export interface AssetProfileIdentifier { dataSource: DataSource; symbol: string; } diff --git a/libs/common/src/lib/interfaces/benchmark.interface.ts b/libs/common/src/lib/interfaces/benchmark.interface.ts index 2d63b677c..bf85cd752 100644 --- a/libs/common/src/lib/interfaces/benchmark.interface.ts +++ b/libs/common/src/lib/interfaces/benchmark.interface.ts @@ -3,6 +3,7 @@ import { BenchmarkTrend } from '@ghostfolio/common/types/'; import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; export interface Benchmark { + dataSource: EnhancedSymbolProfile['dataSource']; marketCondition: 'ALL_TIME_HIGH' | 'BEAR_MARKET' | 'NEUTRAL_MARKET'; name: EnhancedSymbolProfile['name']; performances: { @@ -11,6 +12,7 @@ export interface Benchmark { performancePercent: number; }; }; + symbol: EnhancedSymbolProfile['symbol']; trend50d: BenchmarkTrend; trend200d: BenchmarkTrend; } diff --git a/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts b/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts index f9472320d..b2965edd8 100644 --- a/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts +++ b/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts @@ -2,6 +2,7 @@ import { AssetClass, AssetSubClass, DataSource, Tag } from '@prisma/client'; import { Country } from './country.interface'; import { DataProviderInfo } from './data-provider-info.interface'; +import { Holding } from './holding.interface'; import { ScraperConfiguration } from './scraper-configuration.interface'; import { Sector } from './sector.interface'; @@ -16,10 +17,11 @@ export interface EnhancedSymbolProfile { dataProviderInfo?: DataProviderInfo; dataSource: DataSource; dateOfFirstActivity?: Date; - id: string; figi?: string; figiComposite?: string; figiShareClass?: string; + holdings: Holding[]; + id: string; isin?: string; name?: string; scraperConfiguration?: ScraperConfiguration; diff --git a/libs/common/src/lib/interfaces/holding.interface.ts b/libs/common/src/lib/interfaces/holding.interface.ts new file mode 100644 index 000000000..5a0df62f6 --- /dev/null +++ b/libs/common/src/lib/interfaces/holding.interface.ts @@ -0,0 +1,5 @@ +export interface Holding { + allocationInPercentage?: number; + name: string; + valueInBaseCurrency: number; +} diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index 1f6bf99eb..f7224407b 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -7,6 +7,7 @@ import type { AdminMarketData, AdminMarketDataItem } from './admin-market-data.interface'; +import type { AssetProfileIdentifier } from './asset-profile-identifier.interface'; import type { BenchmarkMarketDataDetails } from './benchmark-market-data-details.interface'; import type { BenchmarkProperty } from './benchmark-property.interface'; import type { Benchmark } from './benchmark.interface'; @@ -17,6 +18,7 @@ import type { Export } from './export.interface'; import type { FilterGroup } from './filter-group.interface'; import type { Filter } from './filter.interface'; import type { HistoricalDataItem } from './historical-data-item.interface'; +import type { Holding } from './holding.interface'; import type { InfoItem } from './info-item.interface'; import type { InvestmentItem } from './investment-item.interface'; import type { LineChartItem } from './line-chart-item.interface'; @@ -47,7 +49,6 @@ import type { Subscription } from './subscription.interface'; import type { SymbolMetrics } from './symbol-metrics.interface'; import type { SystemMessage } from './system-message.interface'; import type { TabConfiguration } from './tab-configuration.interface'; -import type { UniqueAsset } from './unique-asset.interface'; import type { UserSettings } from './user-settings.interface'; import type { User } from './user.interface'; @@ -60,6 +61,7 @@ export { AdminMarketData, AdminMarketDataDetails, AdminMarketDataItem, + AssetProfileIdentifier, Benchmark, BenchmarkMarketDataDetails, BenchmarkProperty, @@ -71,6 +73,7 @@ export { Filter, FilterGroup, HistoricalDataItem, + Holding, ImportResponse, InfoItem, InvestmentItem, @@ -99,7 +102,6 @@ export { Subscription, SymbolMetrics, TabConfiguration, - UniqueAsset, User, UserSettings }; diff --git a/libs/common/src/lib/interfaces/portfolio-performance.interface.ts b/libs/common/src/lib/interfaces/portfolio-performance.interface.ts index 9d4ac5fab..c0c3802d8 100644 --- a/libs/common/src/lib/interfaces/portfolio-performance.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-performance.interface.ts @@ -2,10 +2,6 @@ export interface PortfolioPerformance { annualizedPerformancePercent?: number; currentNetWorth?: number; currentValueInBaseCurrency: number; - grossPerformance: number; - grossPerformancePercentage: number; - grossPerformancePercentageWithCurrencyEffect: number; - grossPerformanceWithCurrencyEffect: number; netPerformance: number; netPerformancePercentage: number; netPerformancePercentageWithCurrencyEffect: number; diff --git a/libs/common/src/lib/interfaces/portfolio-position.interface.ts b/libs/common/src/lib/interfaces/portfolio-position.interface.ts index a47a1ebc7..e277ba468 100644 --- a/libs/common/src/lib/interfaces/portfolio-position.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-position.interface.ts @@ -1,7 +1,9 @@ +import { Market, MarketAdvanced } from '@ghostfolio/common/types'; + import { AssetClass, AssetSubClass, DataSource, Tag } from '@prisma/client'; -import { Market, MarketAdvanced, MarketState } from '../types'; import { Country } from './country.interface'; +import { Holding } from './holding.interface'; import { Sector } from './sector.interface'; export interface PortfolioPosition { @@ -20,13 +22,13 @@ export interface PortfolioPosition { grossPerformancePercent: number; grossPerformancePercentWithCurrencyEffect: number; grossPerformanceWithCurrencyEffect: number; + holdings: Holding[]; investment: number; marketChange?: number; marketChangePercent?: number; marketPrice: number; markets?: { [key in Market]: number }; marketsAdvanced?: { [key in MarketAdvanced]: number }; - marketState: MarketState; name: string; netPerformance: number; netPerformancePercent: number; diff --git a/libs/common/src/lib/interfaces/portfolio-report-rule.interface.ts b/libs/common/src/lib/interfaces/portfolio-report-rule.interface.ts index 5ba8ccef3..61fe389af 100644 --- a/libs/common/src/lib/interfaces/portfolio-report-rule.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-report-rule.interface.ts @@ -1,5 +1,7 @@ export interface PortfolioReportRule { - evaluation: string; + evaluation?: string; + isActive: boolean; + key: string; name: string; - value: boolean; + value?: boolean; } diff --git a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts index de04dc24c..5b27f4c7e 100644 --- a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts @@ -17,6 +17,8 @@ export interface PortfolioSummary extends PortfolioPerformance { filteredValueInPercentage?: number; fireWealth: number; firstOrderDate: Date; + grossPerformance: number; + grossPerformanceWithCurrencyEffect: number; interest: number; items: number; liabilities: number; diff --git a/libs/common/src/lib/interfaces/product.ts b/libs/common/src/lib/interfaces/product.ts index 274ee8207..c00253b3d 100644 --- a/libs/common/src/lib/interfaces/product.ts +++ b/libs/common/src/lib/interfaces/product.ts @@ -1,6 +1,5 @@ export interface Product { alias?: string; - component: any; founded?: number; hasFreePlan?: boolean; hasSelfHostingAbility?: boolean; @@ -11,7 +10,7 @@ export interface Product { note?: string; origin?: string; pricingPerYear?: string; - region?: string; + regions?: string[]; slogan?: string; useAnonymously?: boolean; } diff --git a/libs/common/src/lib/interfaces/responses/errors.interface.ts b/libs/common/src/lib/interfaces/responses/errors.interface.ts index 0b43592be..b830a9e30 100644 --- a/libs/common/src/lib/interfaces/responses/errors.interface.ts +++ b/libs/common/src/lib/interfaces/responses/errors.interface.ts @@ -1,6 +1,6 @@ -import { UniqueAsset } from '../unique-asset.interface'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; export interface ResponseError { - errors?: UniqueAsset[]; + errors?: AssetProfileIdentifier[]; hasErrors: boolean; } diff --git a/libs/common/src/lib/interfaces/symbol-metrics.interface.ts b/libs/common/src/lib/interfaces/symbol-metrics.interface.ts index 6d411d706..cc1d8a4b3 100644 --- a/libs/common/src/lib/interfaces/symbol-metrics.interface.ts +++ b/libs/common/src/lib/interfaces/symbol-metrics.interface.ts @@ -1,3 +1,5 @@ +import { DateRange } from '@ghostfolio/common/types'; + import { Big } from 'big.js'; export interface SymbolMetrics { @@ -29,12 +31,12 @@ export interface SymbolMetrics { netPerformanceValuesPercentage: { [date: string]: Big; }; - netPerformancePercentageWithCurrencyEffect: Big; + netPerformancePercentageWithCurrencyEffectMap: { [key: DateRange]: Big }; netPerformanceValues: { [date: string]: Big; }; netPerformanceValuesWithCurrencyEffect: { [date: string]: Big }; - netPerformanceWithCurrencyEffect: Big; + netPerformanceWithCurrencyEffectMap: { [key: DateRange]: Big }; timeWeightedInvestment: Big; timeWeightedInvestmentValues: { [date: string]: Big; diff --git a/libs/common/src/lib/interfaces/user-settings.interface.ts b/libs/common/src/lib/interfaces/user-settings.interface.ts index a0599d132..106f54600 100644 --- a/libs/common/src/lib/interfaces/user-settings.interface.ts +++ b/libs/common/src/lib/interfaces/user-settings.interface.ts @@ -1,4 +1,10 @@ -import { ColorScheme, DateRange, ViewMode } from '@ghostfolio/common/types'; +import { + ColorScheme, + DateRange, + HoldingsViewMode, + ViewMode, + XRayRulesSettings +} from '@ghostfolio/common/types'; export interface UserSettings { annualInterestRate?: number; @@ -9,6 +15,7 @@ export interface UserSettings { emergencyFund?: number; 'filters.accounts'?: string[]; 'filters.tags'?: string[]; + holdingsViewMode?: HoldingsViewMode; isExperimentalFeatures?: boolean; isRestrictedView?: boolean; language?: string; @@ -17,4 +24,5 @@ export interface UserSettings { retirementDate?: string; savingsRate?: number; viewMode?: ViewMode; + xRayRules?: XRayRulesSettings; } diff --git a/libs/common/src/lib/models/portfolio-snapshot.ts b/libs/common/src/lib/models/portfolio-snapshot.ts index 909f44f2a..e51931711 100644 --- a/libs/common/src/lib/models/portfolio-snapshot.ts +++ b/libs/common/src/lib/models/portfolio-snapshot.ts @@ -1,5 +1,8 @@ import { transformToBig } from '@ghostfolio/common/class-transformer'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + HistoricalDataItem +} from '@ghostfolio/common/interfaces'; import { TimelinePosition } from '@ghostfolio/common/models'; import { Big } from 'big.js'; @@ -9,49 +12,12 @@ export class PortfolioSnapshot { @Transform(transformToBig, { toClassOnly: true }) @Type(() => Big) currentValueInBaseCurrency: Big; - errors?: UniqueAsset[]; - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - grossPerformance: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - grossPerformanceWithCurrencyEffect: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - grossPerformancePercentage: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - grossPerformancePercentageWithCurrencyEffect: Big; + errors?: AssetProfileIdentifier[]; hasErrors: boolean; - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - netAnnualizedPerformance?: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - netAnnualizedPerformanceWithCurrencyEffect?: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - netPerformance: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - netPerformanceWithCurrencyEffect: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - netPerformancePercentage: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - netPerformancePercentageWithCurrencyEffect: Big; + historicalData: HistoricalDataItem[]; @Type(() => TimelinePosition) positions: TimelinePosition[]; diff --git a/libs/common/src/lib/models/timeline-position.ts b/libs/common/src/lib/models/timeline-position.ts index 412449590..f683c0951 100644 --- a/libs/common/src/lib/models/timeline-position.ts +++ b/libs/common/src/lib/models/timeline-position.ts @@ -1,4 +1,8 @@ -import { transformToBig } from '@ghostfolio/common/class-transformer'; +import { + transformToBig, + transformToMapOfBig +} from '@ghostfolio/common/class-transformer'; +import { DateRange } from '@ghostfolio/common/types'; import { DataSource, Tag } from '@prisma/client'; import { Big } from 'big.js'; @@ -24,6 +28,10 @@ export class TimelinePosition { @Type(() => Big) fee: Big; + @Transform(transformToBig, { toClassOnly: true }) + @Type(() => Big) + feeInBaseCurrency: Big; + firstBuyDate: string; @Transform(transformToBig, { toClassOnly: true }) @@ -61,13 +69,11 @@ export class TimelinePosition { @Type(() => Big) netPerformancePercentage: Big; - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - netPerformancePercentageWithCurrencyEffect: Big; + @Transform(transformToMapOfBig, { toClassOnly: true }) + netPerformancePercentageWithCurrencyEffectMap: { [key: DateRange]: Big }; - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - netPerformanceWithCurrencyEffect: Big; + @Transform(transformToMapOfBig, { toClassOnly: true }) + netPerformanceWithCurrencyEffectMap: { [key: DateRange]: Big }; @Transform(transformToBig, { toClassOnly: true }) @Type(() => Big) diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 304c8ba24..1a235f1a9 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -5,6 +5,7 @@ import { Role } from '@prisma/client'; export const permissions = { accessAdminControl: 'accessAdminControl', accessAssistant: 'accessAssistant', + accessHoldingsChart: 'accessHoldingsChart', createAccess: 'createAccess', createAccount: 'createAccount', createAccountBalance: 'createAccountBalance', @@ -47,6 +48,7 @@ export function getPermissions(aRole: Role): string[] { return [ permissions.accessAdminControl, permissions.accessAssistant, + permissions.accessHoldingsChart, permissions.createAccess, permissions.createAccount, permissions.createAccountBalance, @@ -72,11 +74,16 @@ export function getPermissions(aRole: Role): string[] { ]; case 'DEMO': - return [permissions.accessAssistant, permissions.createUserAccount]; + return [ + permissions.accessAssistant, + permissions.accessHoldingsChart, + permissions.createUserAccount + ]; case 'USER': return [ permissions.accessAssistant, + permissions.accessHoldingsChart, permissions.createAccess, permissions.createAccount, permissions.createAccountBalance, diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts b/libs/common/src/lib/personal-finance-tools.ts similarity index 54% rename from apps/client/src/app/pages/resources/personal-finance-tools/products.ts rename to libs/common/src/lib/personal-finance-tools.ts index c681ac93c..e19b1eb5b 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts +++ b/libs/common/src/lib/personal-finance-tools.ts @@ -1,86 +1,7 @@ import { Product } from '@ghostfolio/common/interfaces'; -import { AllInvestViewPageComponent } from './products/allinvestview-page.component'; -import { AllvueSystemsPageComponent } from './products/allvue-systems-page.component'; -import { AltooPageComponent } from './products/altoo-page.component'; -import { BasilFinancePageComponent } from './products/basil-finance-page.component'; -import { BeanvestPageComponent } from './products/beanvest-page.component'; -import { CapitallyPageComponent } from './products/capitally-page.component'; -import { CapMonPageComponent } from './products/capmon-page.component'; -import { CompoundPlanningPageComponent } from './products/compound-planning-page.component'; -import { CopilotMoneyPageComponent } from './products/copilot-money-page.component'; -import { DeFiPageComponent } from './products/de.fi-page.component'; -import { DeltaPageComponent } from './products/delta-page.component'; -import { DivvyDiaryPageComponent } from './products/divvydiary-page.component'; -import { EightFiguresPageComponent } from './products/eightfigures-page.component'; -import { EmpowerPageComponent } from './products/empower-page.component'; -import { ExirioPageComponent } from './products/exirio-page.component'; -import { FinaPageComponent } from './products/fina-page.component'; -import { FinaryPageComponent } from './products/finary-page.component'; -import { FinWisePageComponent } from './products/finwise-page.component'; -import { FolisharePageComponent } from './products/folishare-page.component'; -import { GetquinPageComponent } from './products/getquin-page.component'; -import { GoSpatzPageComponent } from './products/gospatz-page.component'; -import { IntuitMintPageComponent } from './products/intuit-mint-page.component'; -import { JustEtfPageComponent } from './products/justetf-page.component'; -import { KuberaPageComponent } from './products/kubera-page.component'; -import { MagnifiPageComponent } from './products/magnifi-page.component'; -import { MarketsShPageComponent } from './products/markets.sh-page.component'; -import { MaybeFinancePageComponent } from './products/maybe-finance-page.component'; -import { MonarchMoneyPageComponent } from './products/monarch-money-page.component'; -import { MonsePageComponent } from './products/monse-page.component'; -import { ParqetPageComponent } from './products/parqet-page.component'; -import { PlannixPageComponent } from './products/plannix-page.component'; -import { PortfolioDividendTrackerPageComponent } from './products/portfolio-dividend-tracker-page.component'; -import { PortfolioVisualizerPageComponent } from './products/portfolio-visualizer-page.component'; -import { PortseidoPageComponent } from './products/portseido-page.component'; -import { ProjectionLabPageComponent } from './products/projectionlab-page.component'; -import { RocketMoneyPageComponent } from './products/rocket-money-page.component'; -import { SeekingAlphaPageComponent } from './products/seeking-alpha-page.component'; -import { SharesightPageComponent } from './products/sharesight-page.component'; -import { SimplePortfolioPageComponent } from './products/simple-portfolio-page.component'; -import { SnowballAnalyticsPageComponent } from './products/snowball-analytics-page.component'; -import { StockEventsPageComponent } from './products/stock-events-page.component'; -import { StocklePageComponent } from './products/stockle-page.component'; -import { StockMarketEyePageComponent } from './products/stockmarketeye-page.component'; -import { SumioPageComponent } from './products/sumio-page.component'; -import { TillerPageComponent } from './products/tiller-page.component'; -import { UtlunaPageComponent } from './products/utluna-page.component'; -import { VyzerPageComponent } from './products/vyzer-page.component'; -import { WallminePageComponent } from './products/wallmine-page.component'; -import { WealthfolioPageComponent } from './products/wealthfolio-page.component'; -import { WealthicaPageComponent } from './products/wealthica-page.component'; -import { WhalPageComponent } from './products/whal-page.component'; -import { YeekateePageComponent } from './products/yeekatee-page.component'; -import { YnabPageComponent } from './products/ynab-page.component'; - -export const products: Product[] = [ - { - component: undefined, - founded: 2021, - hasFreePlan: true, - hasSelfHostingAbility: true, - isOpenSource: true, - key: 'ghostfolio', - languages: [ - 'Deutsch', - 'English', - 'Español', - 'Français', - 'Italiano', - 'Nederlands', - 'Português', - 'Türkçe', - '简体中文' - ], - name: 'Ghostfolio', - origin: $localize`Switzerland`, - region: $localize`Global`, - slogan: 'Open Source Wealth Management', - useAnonymously: true - }, +export const personalFinanceTools: Product[] = [ { - component: AllInvestViewPageComponent, founded: 2023, hasSelfHostingAbility: false, key: 'allinvestview', @@ -89,26 +10,41 @@ export const products: Product[] = [ slogan: 'All your Investments in One View' }, { - component: AllvueSystemsPageComponent, founded: 2019, hasFreePlan: false, hasSelfHostingAbility: false, key: 'allvue-systems', name: 'Allvue Systems', - origin: $localize`United States`, + origin: 'United States', slogan: 'Investment Software Suite' }, { - component: AltooPageComponent, + founded: 2016, + key: 'alphatrackr', + languages: ['English'], + name: 'AlphaTrackr', + slogan: 'Investment Portfolio Tracking Tool' + }, + { founded: 2017, hasSelfHostingAbility: false, key: 'altoo', name: 'Altoo Wealth Platform', - origin: $localize`Switzerland`, + origin: 'Switzerland', slogan: 'Simplicity for Complex Wealth' }, { - component: BasilFinancePageComponent, + founded: 2018, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'anlage.app', + languages: ['English'], + name: 'Anlage.App', + origin: 'Austria', + pricingPerYear: '$120', + slogan: 'Analyze and track your portfolio.' + }, + { founded: 2022, hasFreePlan: true, hasSelfHostingAbility: false, @@ -117,56 +53,72 @@ export const products: Product[] = [ slogan: 'The ultimate solution for tracking and managing your investments' }, { - component: BeanvestPageComponent, founded: 2020, hasFreePlan: true, hasSelfHostingAbility: false, key: 'beanvest', name: 'Beanvest', - origin: $localize`France`, + origin: 'France', pricingPerYear: '$100', slogan: 'Stock Portfolio Tracker for Smart Investors' }, { - component: CapitallyPageComponent, + founded: 2013, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'cointracking', + languages: ['Deutsch', 'English'], + name: 'CoinTracking', + origin: 'Germany', + pricingPerYear: '$120', + slogan: 'The leading Crypto Portfolio Tracker & Tax Calculator' + }, + { + founded: 2022, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'degiro-portfolio-tracker-by-capitalyse', + languages: ['English'], + name: 'DEGIRO Portfolio Tracker by Capitalyse', + origin: 'Netherlands', + pricingPerYear: '€24', + slogan: 'Democratizing Data Analytics' + }, + { hasFreePlan: true, hasSelfHostingAbility: false, key: 'capitally', name: 'Capitally', - origin: $localize`Poland`, + origin: 'Poland', pricingPerYear: '€50', slogan: 'Optimize your investments performance' }, { - component: CapMonPageComponent, founded: 2022, key: 'capmon', name: 'CapMon.org', - origin: $localize`Germany`, - note: 'CapMon.org has discontinued in 2023', + origin: 'Germany', + note: 'CapMon.org was discontinued in 2023', slogan: 'Next Generation Assets Tracking' }, { - component: CompoundPlanningPageComponent, founded: 2019, key: 'compound-planning', name: 'Compound Planning', - origin: $localize`United States`, + origin: 'United States', slogan: 'Modern Wealth & Investment Management' }, { - component: CopilotMoneyPageComponent, founded: 2019, hasFreePlan: false, hasSelfHostingAbility: false, key: 'copilot-money', name: 'Copilot Money', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$70', slogan: 'Do money better with Copilot' }, { - component: DeFiPageComponent, founded: 2020, key: 'de.fi', languages: ['English'], @@ -174,204 +126,235 @@ export const products: Product[] = [ slogan: 'DeFi Portfolio Tracker' }, { - component: DeltaPageComponent, founded: 2017, hasFreePlan: true, hasSelfHostingAbility: false, key: 'delta', name: 'Delta Investment Tracker', note: 'Acquired by eToro', - origin: $localize`Belgium`, + origin: 'Belgium', slogan: 'The app to track all your investments. Make smart moves only.' }, { - component: DivvyDiaryPageComponent, founded: 2019, hasFreePlan: true, hasSelfHostingAbility: false, key: 'divvydiary', languages: ['Deutsch', 'English'], name: 'DivvyDiary', - origin: $localize`Germany`, + origin: 'Germany', pricingPerYear: '€65', slogan: 'Your personal Dividend Calendar' }, { - component: EmpowerPageComponent, founded: 2009, hasSelfHostingAbility: false, key: 'empower', name: 'Empower', note: 'Originally named as Personal Capital', - origin: $localize`United States`, + origin: 'United States', slogan: 'Get answers to your money questions' }, { alias: '8figures', - component: EightFiguresPageComponent, founded: 2022, key: 'eightfigures', name: '8FIGURES', - origin: $localize`United States`, + origin: 'United States', slogan: 'Portfolio Tracker Designed by Professional Investors' }, { - component: ExirioPageComponent, founded: 2020, hasFreePlan: true, hasSelfHostingAbility: false, key: 'exirio', name: 'Exirio', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$100', slogan: 'All your wealth, in one place.' }, { - component: FinaPageComponent, founded: 2023, hasFreePlan: true, hasSelfHostingAbility: false, key: 'fina', languages: ['English'], name: 'Fina', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$115', slogan: 'Flexible Financial Management' }, { - component: FinaryPageComponent, founded: 2020, key: 'finary', languages: ['Deutsch', 'English', 'Français'], name: 'Finary', - origin: $localize`United States`, + origin: 'United States', slogan: 'Real-Time Portfolio Tracker & Stock Tracker' }, { - component: FinWisePageComponent, + founded: 2021, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'finateka', + languages: ['English'], + name: 'FINATEKA', + origin: 'United States', + slogan: + 'The most convenient mobile application for personal finance accounting' + }, + { founded: 2023, hasFreePlan: true, key: 'finwise', name: 'FinWise', - origin: $localize`South Africa`, + origin: 'South Africa', pricingPerYear: '€69.99', slogan: 'Personal finances, simplified' }, { - component: FolisharePageComponent, hasFreePlan: true, hasSelfHostingAbility: false, key: 'folishare', languages: ['Deutsch', 'English'], name: 'folishare', - origin: $localize`Austria`, + origin: 'Austria', pricingPerYear: '$65', slogan: 'Take control over your investments' }, { - component: GetquinPageComponent, founded: 2020, hasFreePlan: true, hasSelfHostingAbility: false, key: 'getquin', languages: ['Deutsch', 'English'], name: 'getquin', - origin: $localize`Germany`, + origin: 'Germany', pricingPerYear: '€48', slogan: 'Portfolio Tracker, Analysis & Community' }, { - component: GoSpatzPageComponent, hasFreePlan: true, hasSelfHostingAbility: false, key: 'gospatz', name: 'goSPATZ', - origin: $localize`Germany`, + origin: 'Germany', slogan: 'Volle Kontrolle über deine Investitionen' }, { - component: IntuitMintPageComponent, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'holistic-capital', + languages: ['Deutsch'], + name: 'Holistic', + origin: 'Germany', + slogan: 'Die All-in-One Lösung für dein Vermögen.', + useAnonymously: true + }, + { hasFreePlan: true, hasSelfHostingAbility: false, key: 'intuit-mint', name: 'Intuit Mint', - note: 'Intuit Mint has discontinued in 2023', - origin: $localize`United States`, + note: 'Intuit Mint was discontinued in 2023', + origin: 'United States', pricingPerYear: '$60', slogan: 'Managing money, made simple' }, { - component: JustEtfPageComponent, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'investify', + name: 'Investify', + origin: 'Pakistan', + slogan: 'Advanced portfolio tracking and stock market information' + }, + { founded: 2011, hasFreePlan: true, hasSelfHostingAbility: false, key: 'justetf', name: 'justETF', - origin: $localize`Germany`, + origin: 'Germany', pricingPerYear: '€119', slogan: 'ETF portfolios made simple' }, { - component: KuberaPageComponent, + founded: 2016, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'koyfin', + name: 'Koyfin', + origin: 'United States', + pricingPerYear: '$468', + slogan: 'Comprehensive financial data analysis' + }, + { founded: 2019, hasFreePlan: false, hasSelfHostingAbility: false, key: 'kubera', name: 'Kubera®', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$150', slogan: 'The Time Machine for your Net Worth' }, { - component: MagnifiPageComponent, founded: 2018, hasFreePlan: false, hasSelfHostingAbility: false, key: 'magnifi', name: 'Magnifi', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$132', slogan: 'AI Investing Assistant' }, { - component: MarketsShPageComponent, founded: 2022, hasFreePlan: true, hasSelfHostingAbility: false, key: 'markets.sh', languages: ['English'], name: 'markets.sh', - origin: $localize`Germany`, + origin: 'Germany', pricingPerYear: '€168', - region: $localize`Global`, + regions: ['Global'], slogan: 'Track your investments' }, { - component: MaybeFinancePageComponent, founded: 2021, hasSelfHostingAbility: false, key: 'maybe-finance', languages: ['English'], name: 'Maybe Finance', - note: 'Maybe Finance has discontinued in 2023', - origin: $localize`United States`, + note: 'Maybe Finance was discontinued in 2023', + origin: 'United States', pricingPerYear: '$145', - region: $localize`United States`, + regions: ['United States'], slogan: 'Your financial future, in your control' }, { - component: MonarchMoneyPageComponent, + hasFreePlan: false, + hasSelfHostingAbility: false, + key: 'merlincrypto', + languages: ['English'], + name: 'Merlin', + origin: 'United States', + pricingPerYear: '$204', + regions: ['Canada', 'United States'], + slogan: 'The smartest way to track your crypto' + }, + { founded: 2019, hasFreePlan: false, hasSelfHostingAbility: false, key: 'monarch-money', name: 'Monarch Money', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$99.99', slogan: 'The modern way to manage your money' }, { - component: MonsePageComponent, hasFreePlan: false, hasSelfHostingAbility: false, key: 'monse', @@ -380,40 +363,69 @@ export const products: Product[] = [ slogan: 'Gain financial control and keep your data private.' }, { - component: ParqetPageComponent, + founded: 2017, + hasFreePlan: false, + hasSelfHostingAbility: false, + key: 'navexa', + name: 'Navexa', + origin: 'Australia', + pricingPerYear: '$90', + slogan: 'The Intelligent Portfolio Tracker' + }, + { founded: 2020, hasSelfHostingAbility: false, hasFreePlan: true, key: 'parqet', name: 'Parqet', note: 'Originally named as Tresor One', - origin: $localize`Germany`, + origin: 'Germany', pricingPerYear: '€88', - region: 'Austria, Germany, Switzerland', + regions: ['Austria', 'Germany', 'Switzerland'], slogan: 'Dein Vermögen immer im Blick' }, { - component: PlannixPageComponent, + founded: 2023, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'plainzer', + languages: ['English'], + name: 'Plainzer', + origin: 'Poland', + pricingPerYear: '$74', + slogan: 'Free dividend tracker for your portfolio' + }, + { founded: 2023, hasSelfHostingAbility: false, key: 'plannix', name: 'Plannix', - origin: $localize`Italy`, + origin: 'Italy', slogan: 'Your Personal Finance Hub' }, { - component: PortfolioDividendTrackerPageComponent, + founded: 2008, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'pocketsmith', + languages: ['English'], + name: 'PocketSmith', + origin: 'New Zealand', + pricingPerYear: '$120', + regions: ['Global'], + slogan: 'Know where your money is going' + }, + { hasFreePlan: false, hasSelfHostingAbility: false, key: 'portfolio-dividend-tracker', languages: ['English', 'Nederlands'], name: 'Portfolio Dividend Tracker', - origin: $localize`Netherlands`, + origin: 'Netherlands', pricingPerYear: '€60', slogan: 'Manage all your portfolios' }, { - component: PortfolioVisualizerPageComponent, hasFreePlan: true, hasSelfHostingAbility: false, key: 'portfolio-visualizer', @@ -423,161 +435,186 @@ export const products: Product[] = [ slogan: 'Tools for Better Investors' }, { - component: PortseidoPageComponent, + hasFreePlan: true, + key: 'portfoloo', + name: 'Portfoloo', + note: 'Portfoloo was discontinued', + slogan: + 'Free Stock Portfolio Tracker with unlimited portfolio and stocks for DIY investors' + }, + { founded: 2021, hasFreePlan: true, hasSelfHostingAbility: false, key: 'portseido', languages: ['Deutsch', 'English', 'Français', 'Nederlands'], name: 'Portseido', - origin: $localize`Thailand`, + origin: 'Thailand', pricingPerYear: '$96', slogan: 'Portfolio Performance and Dividend Tracker' }, { - component: ProjectionLabPageComponent, founded: 2021, hasFreePlan: true, hasSelfHostingAbility: true, key: 'projectionlab', name: 'ProjectionLab', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$108', slogan: 'Build Financial Plans You Love.' }, { - component: RocketMoneyPageComponent, founded: 2015, hasSelfHostingAbility: false, key: 'rocket-money', name: 'Rocket Money', - origin: $localize`United States`, + origin: 'United States', slogan: 'Track your net worth' }, { - component: SeekingAlphaPageComponent, + founded: 2019, + hasSelfHostingAbility: false, + key: 'sarmaaya.pk', + name: 'Sarmaaya.pk Portfolio Tracking', + note: 'Sarmaaya.pk Portfolio Tracking was discontinued in 2024', + origin: 'Pakistan', + slogan: 'Unified platform for financial research and portfolio tracking' + }, + { founded: 2004, hasFreePlan: false, hasSelfHostingAbility: false, key: 'seeking-alpha', name: 'Seeking Alpha', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$239', slogan: 'Stock Market Analysis & Tools for Investors' }, { - component: SharesightPageComponent, + founded: 2022, + key: 'segmio', + name: 'Segmio', + origin: 'Romania', + slogan: 'Wealth Management and Net Worth Tracking' + }, + { founded: 2007, hasFreePlan: true, hasSelfHostingAbility: false, key: 'sharesight', name: 'Sharesight', - origin: $localize`New Zealand`, + origin: 'New Zealand', pricingPerYear: '$135', - region: $localize`Global`, + regions: ['Global'], slogan: 'Stock Portfolio Tracker' }, { - component: SimplePortfolioPageComponent, + hasFreePlan: true, + key: 'sharesmaster', + name: 'SharesMaster', + note: 'SharesMaster was discontinued', + slogan: 'Free Stock Portfolio Tracker' + }, + { hasFreePlan: true, hasSelfHostingAbility: false, key: 'simple-portfolio', name: 'Simple Portfolio', - origin: $localize`Czech Republic`, + origin: 'Czech Republic', pricingPerYear: '€80', slogan: 'Stock Portfolio Tracker' }, { - component: SnowballAnalyticsPageComponent, founded: 2021, hasFreePlan: true, hasSelfHostingAbility: false, key: 'snowball-analytics', name: 'Snowball Analytics', - origin: $localize`France`, + origin: 'France', pricingPerYear: '$80', slogan: 'Simple and powerful portfolio tracker' }, { - component: StockEventsPageComponent, founded: 2019, hasSelfHostingAbility: false, key: 'stock-events', name: 'Stock Events', - origin: $localize`Germany`, + origin: 'Germany', slogan: 'Track all your Investments' }, { - component: StocklePageComponent, key: 'stockle', name: 'Stockle', - origin: $localize`Finland`, + origin: 'Finland', slogan: 'Supercharge your investments tracking experience' }, { - component: StockMarketEyePageComponent, founded: 2008, key: 'stockmarketeye', name: 'StockMarketEye', - origin: $localize`France`, - note: 'StockMarketEye has discontinued in 2023', + origin: 'France', + note: 'StockMarketEye was discontinued in 2023', slogan: 'A Powerful Portfolio & Investment Tracking App' }, { - component: SumioPageComponent, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'stonksfolio', + languages: ['English'], + name: 'Stonksfolio', + origin: 'Bulgaria', + pricingPerYear: '€49.90', + slogan: 'Visualize all of your portfolios' + }, + { hasFreePlan: true, hasSelfHostingAbility: false, key: 'sumio', name: 'Sumio', - origin: $localize`Czech Republic`, + origin: 'Czech Republic', pricingPerYear: '$20', slogan: 'Sum up and build your wealth.' }, { - component: TillerPageComponent, founded: 2016, hasFreePlan: false, key: 'tiller', name: 'Tiller', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$79', slogan: 'Your financial life in a spreadsheet, automatically updated each day' }, { - component: UtlunaPageComponent, hasFreePlan: true, hasSelfHostingAbility: false, key: 'utluna', languages: ['Deutsch', 'English', 'Français'], name: 'Utluna', - origin: $localize`Switzerland`, + origin: 'Switzerland', pricingPerYear: '$300', slogan: 'Your Portfolio. Revealed.', useAnonymously: true }, { - component: VyzerPageComponent, founded: 2020, hasFreePlan: true, key: 'vyzer', name: 'Vyzer', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$348', slogan: 'Virtual Family Office for Smart Wealth Management' }, { - component: WallminePageComponent, hasSelfHostingAbility: false, key: 'wallmine', languages: ['English'], name: 'wallmine', - origin: $localize`Czech Republic`, + origin: 'Czech Republic', pricingPerYear: '$600', slogan: 'Make Smarter Investments' }, { - component: WealthfolioPageComponent, hasSelfHostingAbility: true, key: 'wealthfolio', languages: ['English'], @@ -585,45 +622,61 @@ export const products: Product[] = [ slogan: 'Desktop Investment Tracker' }, { - component: WealthicaPageComponent, founded: 2015, hasFreePlan: true, hasSelfHostingAbility: false, key: 'wealthica', languages: ['English', 'Français'], name: 'Wealthica', - origin: $localize`Canada`, + origin: 'Canada', pricingPerYear: '$50', slogan: 'See all your investments in one place' }, { - component: WhalPageComponent, + founded: 2018, + hasSelfHostingAbility: false, + key: 'wealthy-tracker', + languages: ['English'], + name: 'Wealthy Tracker', + origin: 'India', + slogan: 'One app to manage all your investments' + }, + { key: 'whal', name: 'Whal', - origin: $localize`United States`, + origin: 'United States', slogan: 'Manage your investments in one place' }, { - component: YeekateePageComponent, founded: 2021, hasFreePlan: true, hasSelfHostingAbility: false, key: 'yeekatee', languages: ['Deutsch', 'English', 'Español', 'Français', 'Italiano'], name: 'yeekatee', - origin: $localize`Switzerland`, - region: $localize`Global`, + note: 'yeekatee was discontinued in 2024', + origin: 'Switzerland', + regions: ['Global'], slogan: 'Connect. Share. Invest.' }, { - component: YnabPageComponent, founded: 2004, hasFreePlan: false, hasSelfHostingAbility: false, key: 'ynab', name: 'YNAB (You Need a Budget)', - origin: $localize`United States`, + origin: 'United States', pricingPerYear: '$99', slogan: 'Change Your Relationship With Money' + }, + { + founded: 2019, + hasFreePlan: false, + hasSelfHostingAbility: false, + key: 'ziggma', + name: 'Ziggma', + origin: 'United States', + pricingPerYear: '$90', + slogan: 'Your solution for investing success' } ]; diff --git a/libs/common/src/lib/types/holdings-view-mode.type.ts b/libs/common/src/lib/types/holdings-view-mode.type.ts new file mode 100644 index 000000000..7b5d0a09c --- /dev/null +++ b/libs/common/src/lib/types/holdings-view-mode.type.ts @@ -0,0 +1 @@ +export type HoldingsViewMode = 'CHART' | 'TABLE'; diff --git a/libs/common/src/lib/types/index.ts b/libs/common/src/lib/types/index.ts index fc4ddc4bf..f8307152d 100644 --- a/libs/common/src/lib/types/index.ts +++ b/libs/common/src/lib/types/index.ts @@ -8,6 +8,7 @@ import type { DateRange } from './date-range.type'; import type { Granularity } from './granularity.type'; import type { GroupBy } from './group-by.type'; import type { HoldingType } from './holding-type.type'; +import type { HoldingsViewMode } from './holdings-view-mode.type'; import type { MarketAdvanced } from './market-advanced.type'; import type { MarketDataPreset } from './market-data-preset.type'; import type { MarketState } from './market-state.type'; @@ -18,6 +19,7 @@ import type { SubscriptionOffer } from './subscription-offer.type'; import type { ToggleOption } from './toggle-option.type'; import type { UserWithSettings } from './user-with-settings.type'; import type { ViewMode } from './view-mode.type'; +import type { XRayRulesSettings } from './x-ray-rules-settings.type'; export type { AccessType, @@ -30,6 +32,7 @@ export type { Granularity, GroupBy, HoldingType, + HoldingsViewMode, Market, MarketAdvanced, MarketDataPreset, @@ -39,5 +42,6 @@ export type { SubscriptionOffer, ToggleOption, UserWithSettings, - ViewMode + ViewMode, + XRayRulesSettings }; diff --git a/libs/common/src/lib/types/market-data-preset.type.ts b/libs/common/src/lib/types/market-data-preset.type.ts index 497c4cf3c..0dbf914fa 100644 --- a/libs/common/src/lib/types/market-data-preset.type.ts +++ b/libs/common/src/lib/types/market-data-preset.type.ts @@ -1,4 +1,5 @@ export type MarketDataPreset = + | 'BENCHMARKS' | 'CURRENCIES' | 'ETF_WITHOUT_COUNTRIES' | 'ETF_WITHOUT_SECTORS'; diff --git a/libs/common/src/lib/types/x-ray-rules-settings.type.ts b/libs/common/src/lib/types/x-ray-rules-settings.type.ts new file mode 100644 index 000000000..bc2782547 --- /dev/null +++ b/libs/common/src/lib/types/x-ray-rules-settings.type.ts @@ -0,0 +1,12 @@ +export type XRayRulesSettings = { + AccountClusterRiskCurrentInvestment?: RuleSettings; + AccountClusterRiskSingleAccount?: RuleSettings; + CurrencyClusterRiskBaseCurrencyCurrentInvestment?: RuleSettings; + CurrencyClusterRiskCurrentInvestment?: RuleSettings; + EmergencyFundSetup?: RuleSettings; + FeeRatioInitialInvestment?: RuleSettings; +}; + +interface RuleSettings { + isActive: boolean; +} diff --git a/libs/common/src/lib/validator-constraints/is-after-1970.ts b/libs/common/src/lib/validator-constraints/is-after-1970.ts new file mode 100644 index 000000000..9dc0b04c0 --- /dev/null +++ b/libs/common/src/lib/validator-constraints/is-after-1970.ts @@ -0,0 +1,16 @@ +import { + ValidatorConstraint, + ValidatorConstraintInterface +} from 'class-validator'; +import { format, isAfter } from 'date-fns'; + +@ValidatorConstraint({ name: 'isAfter1970' }) +export class IsAfter1970Constraint implements ValidatorConstraintInterface { + public defaultMessage() { + return `date must be after ${format(new Date(0), 'yyyy')}`; + } + + public validate(aDate: Date) { + return isAfter(aDate, new Date(0)); + } +} diff --git a/libs/ui/src/lib/account-balances/account-balances.component.ts b/libs/ui/src/lib/account-balances/account-balances.component.ts index f96fbd2e2..cdacabf07 100644 --- a/libs/ui/src/lib/account-balances/account-balances.component.ts +++ b/libs/ui/src/lib/account-balances/account-balances.component.ts @@ -1,4 +1,6 @@ import { CreateAccountBalanceDto } from '@ghostfolio/api/app/account-balance/create-account-balance.dto'; +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { validateObjectForForm } from '@ghostfolio/client/util/form.util'; import { getLocale } from '@ghostfolio/common/helper'; import { AccountBalancesResponse } from '@ghostfolio/common/interfaces'; @@ -81,7 +83,10 @@ export class GfAccountBalancesComponent private unsubscribeSubject = new Subject(); - public constructor(private dateAdapter: DateAdapter) {} + public constructor( + private dateAdapter: DateAdapter, + private notificationService: NotificationService + ) {} public ngOnInit() { this.dateAdapter.setLocale(this.locale); @@ -97,13 +102,13 @@ export class GfAccountBalancesComponent } public onDeleteAccountBalance(aId: string) { - const confirmation = confirm( - $localize`Do you really want to delete this account balance?` - ); - - if (confirmation) { - this.accountBalanceDeleted.emit(aId); - } + this.notificationService.confirm({ + confirmFn: () => { + this.accountBalanceDeleted.emit(aId); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this account balance?` + }); } public async onSubmitAccountBalance() { diff --git a/libs/ui/src/lib/activities-filter/activities-filter.component.scss b/libs/ui/src/lib/activities-filter/activities-filter.component.scss index 07964fdfa..f8b7f88dc 100644 --- a/libs/ui/src/lib/activities-filter/activities-filter.component.scss +++ b/libs/ui/src/lib/activities-filter/activities-filter.component.scss @@ -15,7 +15,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .mat-mdc-form-field { color: rgba(var(--light-primary-text)); } diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index 68950a0c0..cb8115d3e 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -70,7 +70,7 @@
    } -
    +
    diff --git a/libs/ui/src/lib/activities-table/activities-table.component.ts b/libs/ui/src/lib/activities-table/activities-table.component.ts index 204cba0c2..482305bb7 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.ts @@ -1,9 +1,11 @@ import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component'; +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config'; import { getDateFormatString, getLocale } from '@ghostfolio/common/helper'; -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { OrderWithAccount } from '@ghostfolio/common/types'; import { GfActivityTypeComponent } from '@ghostfolio/ui/activity-type'; import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info'; @@ -99,7 +101,7 @@ export class GfActivitiesTableComponent @Output() export = new EventEmitter(); @Output() exportDrafts = new EventEmitter(); @Output() import = new EventEmitter(); - @Output() importDividends = new EventEmitter(); + @Output() importDividends = new EventEmitter(); @Output() pageChanged = new EventEmitter(); @Output() selectedActivities = new EventEmitter(); @Output() sortChanged = new EventEmitter(); @@ -120,7 +122,10 @@ export class GfActivitiesTableComponent private unsubscribeSubject = new Subject(); - public constructor(private router: Router) {} + public constructor( + private notificationService: NotificationService, + private router: Router + ) {} public ngOnInit() { if (this.showCheckbox) { @@ -194,11 +199,9 @@ export class GfActivitiesTableComponent } } else if ( this.hasPermissionToOpenDetails && - !activity.isDraft && - activity.type !== 'FEE' && - activity.type !== 'INTEREST' && - activity.type !== 'ITEM' && - activity.type !== 'LIABILITY' + activity.Account?.isExcluded !== true && + activity.isDraft === false && + ['BUY', 'DIVIDEND', 'SELL'].includes(activity.type) ) { this.onOpenPositionDialog({ dataSource: activity.SymbolProfile.dataSource, @@ -212,23 +215,23 @@ export class GfActivitiesTableComponent } public onDeleteActivities() { - const confirmation = confirm( - $localize`Do you really want to delete these activities?` - ); - - if (confirmation) { - this.activitiesDeleted.emit(); - } + this.notificationService.confirm({ + confirmFn: () => { + this.activitiesDeleted.emit(); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete these activities?` + }); } public onDeleteActivity(aId: string) { - const confirmation = confirm( - $localize`Do you really want to delete this activity?` - ); - - if (confirmation) { - this.activityDeleted.emit(aId); - } + this.notificationService.confirm({ + confirmFn: () => { + this.activityDeleted.emit(aId); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to delete this activity?` + }); } public onExport() { @@ -260,10 +263,12 @@ export class GfActivitiesTableComponent } public onOpenComment(aComment: string) { - alert(aComment); + this.notificationService.alert({ + title: aComment + }); } - public onOpenPositionDialog({ dataSource, symbol }: UniqueAsset) { + public onOpenPositionDialog({ dataSource, symbol }: AssetProfileIdentifier) { this.router.navigate([], { queryParams: { dataSource, symbol, holdingDetailDialog: true } }); diff --git a/libs/ui/src/lib/activity-type/activity-type.component.scss b/libs/ui/src/lib/activity-type/activity-type.component.scss index c6aebbbe2..49889b665 100644 --- a/libs/ui/src/lib/activity-type/activity-type.component.scss +++ b/libs/ui/src/lib/activity-type/activity-type.component.scss @@ -40,7 +40,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .activity-type-badge { background-color: rgba(var(--palette-foreground-text-dark), 0.1) !important; } diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss index c1679e56b..9f677c1a4 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss @@ -10,7 +10,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { &.has-focus { a { color: rgba(var(--dark-primary-text)); diff --git a/libs/ui/src/lib/assistant/assistant.component.ts b/libs/ui/src/lib/assistant/assistant.component.ts index 9aa8b73e4..a2a963c0f 100644 --- a/libs/ui/src/lib/assistant/assistant.component.ts +++ b/libs/ui/src/lib/assistant/assistant.component.ts @@ -231,19 +231,20 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { } ]; - if (this.user?.settings?.isExperimentalFeatures) { - this.dateRangeOptions = this.dateRangeOptions.concat( - eachYearOfInterval({ - end: new Date(), - start: this.user?.dateOfFirstActivity ?? new Date() - }) - .map((date) => { - return { label: format(date, 'yyyy'), value: format(date, 'yyyy') }; - }) - .slice(0, -1) - .reverse() - ); - } + // TODO + // if (this.user?.settings?.isExperimentalFeatures) { + // this.dateRangeOptions = this.dateRangeOptions.concat( + // eachYearOfInterval({ + // end: new Date(), + // start: this.user?.dateOfFirstActivity ?? new Date() + // }) + // .map((date) => { + // return { label: format(date, 'yyyy'), value: format(date, 'yyyy') }; + // }) + // .slice(0, -1) + // .reverse() + // ); + // } this.dateRangeOptions = this.dateRangeOptions.concat([ { diff --git a/libs/ui/src/lib/assistant/assistant.scss b/libs/ui/src/lib/assistant/assistant.scss index 6ed02f658..2de06824a 100644 --- a/libs/ui/src/lib/assistant/assistant.scss +++ b/libs/ui/src/lib/assistant/assistant.scss @@ -26,7 +26,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { .date-range-selector-container { border-color: rgba(var(--light-dividers)); } diff --git a/libs/ui/src/lib/assistant/interfaces/interfaces.ts b/libs/ui/src/lib/assistant/interfaces/interfaces.ts index 2597ccef0..3481b37cf 100644 --- a/libs/ui/src/lib/assistant/interfaces/interfaces.ts +++ b/libs/ui/src/lib/assistant/interfaces/interfaces.ts @@ -1,4 +1,4 @@ -import { UniqueAsset } from '@ghostfolio/common/interfaces'; +import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { DateRange } from '@ghostfolio/common/types'; export interface IDateRangeOption { @@ -6,7 +6,7 @@ export interface IDateRangeOption { value: DateRange; } -export interface ISearchResultItem extends UniqueAsset { +export interface ISearchResultItem extends AssetProfileIdentifier { assetSubClassString: string; currency: string; name: string; diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.scss b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.scss new file mode 100644 index 000000000..02f5d58a1 --- /dev/null +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.scss @@ -0,0 +1,12 @@ +:host { + display: block; + + .mat-mdc-dialog-content { + max-height: unset; + + gf-line-chart { + aspect-ratio: 16 / 9; + margin: 0 -0.5rem; + } + } +} diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts new file mode 100644 index 000000000..73af9e681 --- /dev/null +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.component.ts @@ -0,0 +1,87 @@ +import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module'; +import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; +import { DataService } from '@ghostfolio/client/services/data.service'; +import { DATE_FORMAT } from '@ghostfolio/common/helper'; +import { + AdminMarketDataDetails, + LineChartItem +} from '@ghostfolio/common/interfaces'; +import { GfLineChartComponent } from '@ghostfolio/ui/line-chart'; + +import { CommonModule } from '@angular/common'; +import { + CUSTOM_ELEMENTS_SCHEMA, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + Inject, + OnDestroy, + OnInit +} from '@angular/core'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef +} from '@angular/material/dialog'; +import { format } from 'date-fns'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +import { BenchmarkDetailDialogParams } from './interfaces/interfaces'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + host: { class: 'd-flex flex-column h-100' }, + imports: [ + CommonModule, + GfDialogFooterModule, + GfDialogHeaderModule, + GfLineChartComponent, + MatDialogModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + selector: 'gf-benchmark-detail-dialog', + standalone: true, + styleUrls: ['./benchmark-detail-dialog.component.scss'], + templateUrl: 'benchmark-detail-dialog.html' +}) +export class GfBenchmarkDetailDialogComponent implements OnDestroy, OnInit { + public assetProfile: AdminMarketDataDetails['assetProfile']; + public historicalDataItems: LineChartItem[]; + + private unsubscribeSubject = new Subject(); + + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService, + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: BenchmarkDetailDialogParams + ) {} + + public ngOnInit() { + this.dataService + .fetchAsset({ + dataSource: this.data.dataSource, + symbol: this.data.symbol + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ assetProfile, marketData }) => { + this.assetProfile = assetProfile; + + this.historicalDataItems = marketData.map(({ date, marketPrice }) => { + return { date: format(date, DATE_FORMAT), value: marketPrice }; + }); + + this.changeDetectorRef.markForCheck(); + }); + } + + public onClose() { + this.dialogRef.close(); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.html b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.html new file mode 100644 index 000000000..23196f162 --- /dev/null +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/benchmark-detail-dialog.html @@ -0,0 +1,30 @@ + + +
    +
    + +
    +
    + + diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts new file mode 100644 index 000000000..291f4c973 --- /dev/null +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts @@ -0,0 +1,11 @@ +import { ColorScheme } from '@ghostfolio/common/types'; + +import { DataSource } from '@prisma/client'; + +export interface BenchmarkDetailDialogParams { + colorScheme: ColorScheme; + dataSource: DataSource; + deviceType: string; + locale: string; + symbol: string; +} diff --git a/libs/ui/src/lib/benchmark/benchmark.component.html b/libs/ui/src/lib/benchmark/benchmark.component.html index 9497c63f4..ec92554de 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.html +++ b/libs/ui/src/lib/benchmark/benchmark.component.html @@ -110,5 +110,15 @@
    - +
    diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts index 07e70c2fd..764d65c2c 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark.component.ts @@ -1,6 +1,12 @@ import { getLocale, resolveMarketCondition } from '@ghostfolio/common/helper'; -import { Benchmark, User } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + Benchmark, + User +} from '@ghostfolio/common/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; +import { GfTrendIndicatorComponent } from '@ghostfolio/ui/trend-indicator'; +import { GfValueComponent } from '@ghostfolio/ui/value'; import { CommonModule } from '@angular/common'; import { @@ -8,13 +14,17 @@ import { ChangeDetectionStrategy, Component, Input, - OnChanges + OnChanges, + OnDestroy } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; import { MatTableModule } from '@angular/material/table'; +import { ActivatedRoute, Router, RouterModule } from '@angular/router'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +import { Subject, takeUntil } from 'rxjs'; -import { GfTrendIndicatorComponent } from '../trend-indicator'; -import { GfValueComponent } from '../value'; +import { GfBenchmarkDetailDialogComponent } from './benchmark-detail-dialog/benchmark-detail-dialog.component'; +import { BenchmarkDetailDialogParams } from './benchmark-detail-dialog/interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, @@ -23,7 +33,8 @@ import { GfValueComponent } from '../value'; GfTrendIndicatorComponent, GfValueComponent, MatTableModule, - NgxSkeletonLoaderModule + NgxSkeletonLoaderModule, + RouterModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-benchmark', @@ -31,8 +42,9 @@ import { GfValueComponent } from '../value'; styleUrls: ['./benchmark.component.scss'], templateUrl: './benchmark.component.html' }) -export class GfBenchmarkComponent implements OnChanges { +export class GfBenchmarkComponent implements OnChanges, OnDestroy { @Input() benchmarks: Benchmark[]; + @Input() deviceType: string; @Input() locale = getLocale(); @Input() user: User; @@ -40,7 +52,28 @@ export class GfBenchmarkComponent implements OnChanges { public resolveMarketCondition = resolveMarketCondition; public translate = translate; - public constructor() {} + private unsubscribeSubject = new Subject(); + + public constructor( + private dialog: MatDialog, + private route: ActivatedRoute, + private router: Router + ) { + this.route.queryParams + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((params) => { + if ( + params['benchmarkDetailDialog'] && + params['dataSource'] && + params['symbol'] + ) { + this.openBenchmarkDetailDialog({ + dataSource: params['dataSource'], + symbol: params['symbol'] + }); + } + }); + } public ngOnChanges() { if (this.user?.settings?.isExperimentalFeatures) { @@ -54,4 +87,39 @@ export class GfBenchmarkComponent implements OnChanges { ]; } } + + public onOpenBenchmarkDialog({ dataSource, symbol }: AssetProfileIdentifier) { + this.router.navigate([], { + queryParams: { dataSource, symbol, benchmarkDetailDialog: true } + }); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } + + private openBenchmarkDetailDialog({ + dataSource, + symbol + }: AssetProfileIdentifier) { + const dialogRef = this.dialog.open(GfBenchmarkDetailDialogComponent, { + data: { + dataSource, + symbol, + colorScheme: this.user?.settings?.colorScheme, + deviceType: this.deviceType, + locale: this.locale + }, + height: this.deviceType === 'mobile' ? '97.5vh' : undefined, + width: this.deviceType === 'mobile' ? '100vw' : '50rem' + }); + + dialogRef + .afterClosed() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.router.navigate(['.'], { relativeTo: this.route }); + }); + } } diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.scss b/libs/ui/src/lib/fire-calculator/fire-calculator.component.scss index d5465964b..5662415da 100644 --- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.scss +++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.scss @@ -25,7 +25,7 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { ::ng-deep { .mdc-text-field--disabled { .mdc-notched-outline__leading, diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts index bd52d8b79..aa8b2b90b 100644 --- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts +++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -11,6 +11,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, + ElementRef, EventEmitter, Input, OnChanges, @@ -75,23 +76,23 @@ import { FireCalculatorService } from './fire-calculator.service'; templateUrl: './fire-calculator.component.html' }) export class GfFireCalculatorComponent implements OnChanges, OnDestroy { - @Input() annualInterestRate = 5; + @Input() annualInterestRate: number; @Input() colorScheme: ColorScheme; @Input() currency: string; @Input() deviceType: string; @Input() fireWealth: number; @Input() hasPermissionToUpdateUserSettings: boolean; @Input() locale = getLocale(); - @Input() projectedTotalAmount = 0; + @Input() projectedTotalAmount: number; @Input() retirementDate: Date; - @Input() savingsRate = 0; + @Input() savingsRate: number; @Output() annualInterestRateChanged = new EventEmitter(); @Output() projectedTotalAmountChanged = new EventEmitter(); @Output() retirementDateChanged = new EventEmitter(); @Output() savingsRateChanged = new EventEmitter(); - @ViewChild('chartCanvas') chartCanvas; + @ViewChild('chartCanvas') chartCanvas: ElementRef; public calculatorForm = this.formBuilder.group({ annualInterestRate: new FormControl(undefined), @@ -159,10 +160,10 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { if (isNumber(this.fireWealth) && this.fireWealth >= 0) { this.calculatorForm.setValue( { - annualInterestRate: this.annualInterestRate, - paymentPerPeriod: this.savingsRate, - principalInvestmentAmount: 0, - projectedTotalAmount: this.projectedTotalAmount, + annualInterestRate: this.annualInterestRate ?? 5, + paymentPerPeriod: this.savingsRate ?? 0, + principalInvestmentAmount: this.fireWealth, + projectedTotalAmount: this.projectedTotalAmount ?? 0, retirementDate: this.retirementDate ?? this.DEFAULT_RETIREMENT_DATE }, { @@ -176,9 +177,12 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { // Wait for the chartCanvas this.calculatorForm.patchValue( { - annualInterestRate: this.annualInterestRate, - principalInvestmentAmount: this.fireWealth, - paymentPerPeriod: this.savingsRate ?? 0, + annualInterestRate: + this.calculatorForm.get('annualInterestRate').value, + paymentPerPeriod: this.getPMT(), + principalInvestmentAmount: this.calculatorForm.get( + 'principalInvestmentAmount' + ).value, projectedTotalAmount: Number(this.getProjectedTotalAmount().toFixed(0)) ?? 0, retirementDate: @@ -406,14 +410,18 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { } private getPeriodsToRetire(): number { - if (this.projectedTotalAmount) { - const periods = this.fireCalculatorService.calculatePeriodsToRetire({ + if (this.calculatorForm.get('projectedTotalAmount').value) { + let periods = this.fireCalculatorService.calculatePeriodsToRetire({ P: this.getP(), PMT: this.getPMT(), r: this.getR(), - totalAmount: this.projectedTotalAmount + totalAmount: this.calculatorForm.get('projectedTotalAmount').value }); + if (periods === Infinity) { + periods = Number.MAX_SAFE_INTEGER; + } + return periods; } else { const today = new Date(); @@ -429,23 +437,23 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { } private getPMT() { - return this.savingsRate ?? 0; + return this.calculatorForm.get('paymentPerPeriod').value; } private getProjectedTotalAmount() { - if (this.projectedTotalAmount) { - return this.projectedTotalAmount || 0; - } else { - const { totalAmount } = - this.fireCalculatorService.calculateCompoundInterest({ - P: this.getP(), - periodInMonths: this.periodsToRetire, - PMT: this.getPMT(), - r: this.getR() - }); - - return totalAmount.toNumber(); + if (this.calculatorForm.get('projectedTotalAmount').value) { + return this.calculatorForm.get('projectedTotalAmount').value; } + + const { totalAmount } = + this.fireCalculatorService.calculateCompoundInterest({ + P: this.getP(), + periodInMonths: this.periodsToRetire, + PMT: this.getPMT(), + r: this.getR() + }); + + return totalAmount.toNumber(); } private getR() { @@ -453,6 +461,10 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { } private getRetirementDate(): Date { + if (this.periodsToRetire === Number.MAX_SAFE_INTEGER) { + return undefined; + } + const monthsToRetire = this.periodsToRetire % 12; const yearsToRetire = Math.floor(this.periodsToRetire / 12); diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.html b/libs/ui/src/lib/holdings-table/holdings-table.component.html index 680154dc9..5e4526fdc 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.html +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1,4 +1,4 @@ -
    +
    - diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.scss b/libs/ui/src/lib/holdings-table/holdings-table.component.scss index 8e321bcf1..990b8b294 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.scss +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.scss @@ -1,15 +1,11 @@ :host { display: block; - .holdings { - overflow-x: auto; - - .mat-mdc-table { - th { - ::ng-deep { - .mat-sort-header-container { - justify-content: inherit; - } + .gf-table { + th { + ::ng-deep { + .mat-sort-header-container { + justify-content: inherit; } } } diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.ts b/libs/ui/src/lib/holdings-table/holdings-table.component.ts index d1964b06f..39a9baf5c 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.ts +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.ts @@ -2,7 +2,10 @@ import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset import { GfHoldingDetailDialogComponent } from '@ghostfolio/client/components/holding-detail-dialog/holding-detail-dialog.component'; import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { getLocale } from '@ghostfolio/common/helper'; -import { PortfolioPosition, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + PortfolioPosition +} from '@ghostfolio/common/interfaces'; import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info'; import { GfValueComponent } from '@ghostfolio/ui/value'; @@ -102,7 +105,7 @@ export class GfHoldingsTableComponent implements OnChanges, OnDestroy, OnInit { } } - public onOpenPositionDialog({ dataSource, symbol }: UniqueAsset) { + public onOpenHoldingDialog({ dataSource, symbol }: AssetProfileIdentifier) { if (this.hasPermissionToOpenDetails) { this.router.navigate([], { queryParams: { dataSource, symbol, holdingDetailDialog: true } @@ -110,7 +113,7 @@ export class GfHoldingsTableComponent implements OnChanges, OnDestroy, OnInit { } } - public onShowAllPositions() { + public onShowAllHoldings() { this.pageSize = Number.MAX_SAFE_INTEGER; setTimeout(() => { diff --git a/libs/ui/src/lib/i18n.ts b/libs/ui/src/lib/i18n.ts index 5526a3531..3c41bb8bb 100644 --- a/libs/ui/src/lib/i18n.ts +++ b/libs/ui/src/lib/i18n.ts @@ -6,15 +6,17 @@ const locales = { ASSET_CLASS: $localize`Asset Class`, ASSET_SUB_CLASS: $localize`Asset Sub Class`, BUY_AND_SELL_ACTIVITIES_TOOLTIP: $localize`Buy and sell`, + CANCEL: $localize`Cancel`, CORE: $localize`Core`, + CLOSE: $localize`Close`, DATA_IMPORT_AND_EXPORT_TOOLTIP_BASIC: $localize`Switch to Ghostfolio Premium or Ghostfolio Open Source easily`, DATA_IMPORT_AND_EXPORT_TOOLTIP_OSS: $localize`Switch to Ghostfolio Premium easily`, DATA_IMPORT_AND_EXPORT_TOOLTIP_PREMIUM: $localize`Switch to Ghostfolio Open Source or Ghostfolio Basic easily`, EMERGENCY_FUND: $localize`Emergency Fund`, + Global: $localize`Global`, GRANT: $localize`Grant`, HIGHER_RISK: $localize`Higher Risk`, IMPORT_ACTIVITY_ERROR_IS_DUPLICATE: $localize`This activity already exists.`, - Japan: $localize`Japan`, LOWER_RISK: $localize`Lower Risk`, MONTH: $localize`Month`, MONTHS: $localize`Months`, @@ -26,6 +28,7 @@ const locales = { TAG: $localize`Tag`, YEAR: $localize`Year`, YEARS: $localize`Years`, + YES: $localize`Yes`, // Activity types BUY: $localize`Buy`, @@ -66,6 +69,28 @@ const locales = { Oceania: $localize`Oceania`, 'South America': $localize`South America`, + // Countries + Australia: $localize`Australia`, + Austria: $localize`Austria`, + Belgium: $localize`Belgium`, + Bulgaria: $localize`Bulgaria`, + Canada: $localize`Canada`, + 'Czech Republic': $localize`Czech Republic`, + Finland: $localize`Finland`, + France: $localize`France`, + Germany: $localize`Germany`, + India: $localize`India`, + Italy: $localize`Italy`, + Japan: $localize`Japan`, + Netherlands: $localize`Netherlands`, + 'New Zealand': $localize`New Zealand`, + Poland: $localize`Poland`, + Romania: $localize`Romania`, + 'South Africa': $localize`South Africa`, + Switzerland: $localize`Switzerland`, + Thailand: $localize`Thailand`, + 'United States': $localize`United States`, + // Fear and Greed Index EXTREME_FEAR: $localize`Extreme Fear`, EXTREME_GREED: $localize`Extreme Greed`, diff --git a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.scss b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.scss index 4f5588302..14d72b7da 100644 --- a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.scss +++ b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.scss @@ -11,6 +11,6 @@ } } -:host-context(.is-dark-theme) { +:host-context(.theme-dark) { border-color: rgba(var(--light-dividers)); } diff --git a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts index f243f888a..ad11c54f3 100644 --- a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts +++ b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -1,7 +1,10 @@ import { getTooltipOptions } from '@ghostfolio/common/chart-helper'; import { UNKNOWN_KEY } from '@ghostfolio/common/config'; import { getLocale, getTextColor } from '@ghostfolio/common/helper'; -import { PortfolioPosition, UniqueAsset } from '@ghostfolio/common/interfaces'; +import { + AssetProfileIdentifier, + PortfolioPosition +} from '@ghostfolio/common/interfaces'; import { ColorScheme } from '@ghostfolio/common/types'; import { translate } from '@ghostfolio/ui/i18n'; @@ -29,6 +32,21 @@ import ChartDataLabels from 'chartjs-plugin-datalabels'; import * as Color from 'color'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +const { + blue, + cyan, + grape, + green, + indigo, + lime, + orange, + pink, + red, + teal, + violet, + yellow +} = require('open-color'); + @Component({ changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, NgxSkeletonLoaderModule], @@ -56,7 +74,7 @@ export class GfPortfolioProportionChartComponent }; } = {}; - @Output() proportionChartClicked = new EventEmitter(); + @Output() proportionChartClicked = new EventEmitter(); @ViewChild('chartCanvas') chartCanvas: ElementRef; @@ -112,7 +130,7 @@ export class GfPortfolioProportionChartComponent this.positions[symbol][this.keys[0]].toUpperCase() ].value = chartData[ this.positions[symbol][this.keys[0]].toUpperCase() - ].value.plus(this.positions[symbol].value); + ].value.plus(this.positions[symbol].value || 0); if ( chartData[this.positions[symbol][this.keys[0]].toUpperCase()] @@ -124,20 +142,20 @@ export class GfPortfolioProportionChartComponent chartData[ this.positions[symbol][this.keys[0]].toUpperCase() ].subCategory[this.positions[symbol][this.keys[1]]].value.plus( - this.positions[symbol].value + this.positions[symbol].value || 0 ); } else { chartData[ this.positions[symbol][this.keys[0]].toUpperCase() ].subCategory[ this.positions[symbol][this.keys[1]] ?? UNKNOWN_KEY - ] = { value: new Big(this.positions[symbol].value) }; + ] = { value: new Big(this.positions[symbol].value || 0) }; } } else { chartData[this.positions[symbol][this.keys[0]].toUpperCase()] = { name: this.positions[symbol][this.keys[0]], subCategory: {}, - value: new Big(this.positions[symbol].value ?? 0) + value: new Big(this.positions[symbol].value || 0) }; if (this.positions[symbol][this.keys[1]]) { @@ -145,7 +163,7 @@ export class GfPortfolioProportionChartComponent this.positions[symbol][this.keys[0]].toUpperCase() ].subCategory = { [this.positions[symbol][this.keys[1]]]: { - value: new Big(this.positions[symbol].value) + value: new Big(this.positions[symbol].value || 0) } }; } @@ -153,7 +171,7 @@ export class GfPortfolioProportionChartComponent } else { if (chartData[UNKNOWN_KEY]) { chartData[UNKNOWN_KEY].value = chartData[UNKNOWN_KEY].value.plus( - this.positions[symbol].value + this.positions[symbol].value || 0 ); } else { chartData[UNKNOWN_KEY] = { @@ -161,7 +179,7 @@ export class GfPortfolioProportionChartComponent subCategory: this.keys[1] ? { [this.keys[1]]: { value: new Big(0) } } : undefined, - value: new Big(this.positions[symbol].value) + value: new Big(this.positions[symbol].value || 0) }; } } @@ -170,7 +188,7 @@ export class GfPortfolioProportionChartComponent Object.keys(this.positions).forEach((symbol) => { chartData[symbol] = { name: this.positions[symbol].name, - value: new Big(this.positions[symbol].value) + value: new Big(this.positions[symbol].value || 0) }; }); } @@ -350,24 +368,20 @@ export class GfPortfolioProportionChartComponent this.isLoading = false; } - /** - * Color palette, inspired by https://yeun.github.io/open-color - */ private getColorPalette() { - // return [ - '#329af0', // blue 5 - '#20c997', // teal 5 - '#94d82d', // lime 5 - '#ff922b', // orange 5 - '#f06595', // pink 5 - '#845ef7', // violet 5 - '#5c7cfa', // indigo 5 - '#22b8cf', // cyan 5 - '#51cf66', // green 5 - '#fcc419', // yellow 5 - '#ff6b6b', // red 5 - '#cc5de8' // grape 5 + blue[5], + teal[5], + lime[5], + orange[5], + pink[5], + violet[5], + indigo[5], + cyan[5], + green[5], + yellow[5], + red[5], + grape[5] ]; } diff --git a/libs/ui/src/lib/top-holdings/index.ts b/libs/ui/src/lib/top-holdings/index.ts new file mode 100644 index 000000000..a5bc960a9 --- /dev/null +++ b/libs/ui/src/lib/top-holdings/index.ts @@ -0,0 +1 @@ +export * from './top-holdings.component'; diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.html b/libs/ui/src/lib/top-holdings/top-holdings.component.html new file mode 100644 index 000000000..72463da4a --- /dev/null +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -0,0 +1,90 @@ +
    +
    + + + + + + + + + + + + + + + + + +
    + Name + +
    {{ element?.name | titlecase }}
    +
    + Value + +
    + +
    +
    + Allocation + % + +
    + +
    +
    +
    + + + +@if (isLoading) { + +} + +@if (dataSource.data.length > pageSize && !isLoading) { +
    + +
    +} + +@if (dataSource.data.length === 0 && !isLoading) { +
    + No data available +
    +} diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.scss b/libs/ui/src/lib/top-holdings/top-holdings.component.scss new file mode 100644 index 000000000..990b8b294 --- /dev/null +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.scss @@ -0,0 +1,13 @@ +:host { + display: block; + + .gf-table { + th { + ::ng-deep { + .mat-sort-header-container { + justify-content: inherit; + } + } + } + } +} diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.ts b/libs/ui/src/lib/top-holdings/top-holdings.component.ts new file mode 100644 index 000000000..6f7695687 --- /dev/null +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.ts @@ -0,0 +1,89 @@ +import { getLocale } from '@ghostfolio/common/helper'; +import { Holding } from '@ghostfolio/common/interfaces'; +import { GfValueComponent } from '@ghostfolio/ui/value'; + +import { CommonModule } from '@angular/common'; +import { + CUSTOM_ELEMENTS_SCHEMA, + ChangeDetectionStrategy, + Component, + Input, + OnChanges, + OnDestroy, + OnInit, + ViewChild +} from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; +import { MatSort, MatSortModule } from '@angular/material/sort'; +import { MatTableDataSource, MatTableModule } from '@angular/material/table'; +import { get } from 'lodash'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +import { Subject } from 'rxjs'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [ + CommonModule, + GfValueComponent, + MatButtonModule, + MatPaginatorModule, + MatSortModule, + MatTableModule, + NgxSkeletonLoaderModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], + selector: 'gf-top-holdings', + standalone: true, + styleUrls: ['./top-holdings.component.scss'], + templateUrl: './top-holdings.component.html' +}) +export class GfTopHoldingsComponent implements OnChanges, OnDestroy, OnInit { + @Input() baseCurrency: string; + @Input() locale = getLocale(); + @Input() pageSize = Number.MAX_SAFE_INTEGER; + @Input() topHoldings: Holding[]; + + @ViewChild(MatPaginator) paginator: MatPaginator; + @ViewChild(MatSort) sort: MatSort; + + public dataSource: MatTableDataSource = new MatTableDataSource(); + public displayedColumns: string[] = [ + 'name', + 'valueInBaseCurrency', + 'allocationInPercentage' + ]; + public isLoading = true; + + private unsubscribeSubject = new Subject(); + + public constructor() {} + + public ngOnInit() {} + + public ngOnChanges() { + this.isLoading = true; + + this.dataSource = new MatTableDataSource(this.topHoldings); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + this.dataSource.sortingDataAccessor = get; + + if (this.topHoldings) { + this.isLoading = false; + } + } + + public onShowAllHoldings() { + this.pageSize = Number.MAX_SAFE_INTEGER; + + setTimeout(() => { + this.dataSource.paginator = this.paginator; + }); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/libs/ui/src/lib/treemap-chart/index.ts b/libs/ui/src/lib/treemap-chart/index.ts new file mode 100644 index 000000000..62f54ac11 --- /dev/null +++ b/libs/ui/src/lib/treemap-chart/index.ts @@ -0,0 +1 @@ +export * from './treemap-chart.component'; diff --git a/libs/ui/src/lib/treemap-chart/treemap-chart.component.html b/libs/ui/src/lib/treemap-chart/treemap-chart.component.html new file mode 100644 index 000000000..c7de5ef4d --- /dev/null +++ b/libs/ui/src/lib/treemap-chart/treemap-chart.component.html @@ -0,0 +1,13 @@ +@if (isLoading) { + +} + diff --git a/libs/ui/src/lib/treemap-chart/treemap-chart.component.scss b/libs/ui/src/lib/treemap-chart/treemap-chart.component.scss new file mode 100644 index 000000000..d041372c8 --- /dev/null +++ b/libs/ui/src/lib/treemap-chart/treemap-chart.component.scss @@ -0,0 +1,4 @@ +:host { + aspect-ratio: 16 / 9; + display: block; +} diff --git a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts new file mode 100644 index 000000000..8915707fa --- /dev/null +++ b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts @@ -0,0 +1,214 @@ +import { + getAnnualizedPerformancePercent, + getIntervalFromDateRange +} from '@ghostfolio/common/calculation-helper'; +import { + AssetProfileIdentifier, + PortfolioPosition +} from '@ghostfolio/common/interfaces'; +import { DateRange } from '@ghostfolio/common/types'; + +import { CommonModule } from '@angular/common'; +import { + AfterViewInit, + ChangeDetectionStrategy, + Component, + ElementRef, + EventEmitter, + Input, + OnChanges, + OnDestroy, + Output, + ViewChild +} from '@angular/core'; +import { DataSource } from '@prisma/client'; +import { Big } from 'big.js'; +import { ChartConfiguration } from 'chart.js'; +import { LinearScale } from 'chart.js'; +import { Chart } from 'chart.js'; +import { TreemapController, TreemapElement } from 'chartjs-chart-treemap'; +import { differenceInDays, max } from 'date-fns'; +import { orderBy } from 'lodash'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; + +const { gray, green, red } = require('open-color'); + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [CommonModule, NgxSkeletonLoaderModule], + selector: 'gf-treemap-chart', + standalone: true, + styleUrls: ['./treemap-chart.component.scss'], + templateUrl: './treemap-chart.component.html' +}) +export class GfTreemapChartComponent + implements AfterViewInit, OnChanges, OnDestroy +{ + @Input() cursor: string; + @Input() dateRange: DateRange; + @Input() holdings: PortfolioPosition[]; + + @Output() treemapChartClicked = new EventEmitter(); + + @ViewChild('chartCanvas') chartCanvas: ElementRef; + + public static readonly HEAT_MULTIPLIER = 5; + + public chart: Chart<'treemap'>; + public isLoading = true; + + public constructor() { + Chart.register(LinearScale, TreemapController, TreemapElement); + } + + public ngAfterViewInit() { + if (this.holdings) { + this.initialize(); + } + } + + public ngOnChanges() { + if (this.holdings) { + this.initialize(); + } + } + + public ngOnDestroy() { + this.chart?.destroy(); + } + + private initialize() { + this.isLoading = true; + + const { endDate, startDate } = getIntervalFromDateRange(this.dateRange); + + const data: ChartConfiguration['data'] = { + datasets: [ + { + backgroundColor(ctx) { + const annualizedNetPerformancePercentWithCurrencyEffect = + getAnnualizedPerformancePercent({ + daysInMarket: differenceInDays( + endDate, + max([ + ctx.raw._data.dateOfFirstActivity ?? new Date(0), + startDate + ]) + ), + netPerformancePercentage: new Big( + ctx.raw._data.netPerformancePercentWithCurrencyEffect + ) + }).toNumber(); + + if ( + annualizedNetPerformancePercentWithCurrencyEffect > + 0.03 * GfTreemapChartComponent.HEAT_MULTIPLIER + ) { + return green[9]; + } else if ( + annualizedNetPerformancePercentWithCurrencyEffect > + 0.02 * GfTreemapChartComponent.HEAT_MULTIPLIER + ) { + return green[7]; + } else if ( + annualizedNetPerformancePercentWithCurrencyEffect > + 0.01 * GfTreemapChartComponent.HEAT_MULTIPLIER + ) { + return green[5]; + } else if (annualizedNetPerformancePercentWithCurrencyEffect > 0) { + return green[3]; + } else if ( + annualizedNetPerformancePercentWithCurrencyEffect === 0 + ) { + return gray[3]; + } else if ( + annualizedNetPerformancePercentWithCurrencyEffect > + -0.01 * GfTreemapChartComponent.HEAT_MULTIPLIER + ) { + return red[3]; + } else if ( + annualizedNetPerformancePercentWithCurrencyEffect > + -0.02 * GfTreemapChartComponent.HEAT_MULTIPLIER + ) { + return red[5]; + } else if ( + annualizedNetPerformancePercentWithCurrencyEffect > + -0.03 * GfTreemapChartComponent.HEAT_MULTIPLIER + ) { + return red[7]; + } else { + return red[9]; + } + }, + borderRadius: 4, + key: 'allocationInPercentage', + labels: { + align: 'left', + color: ['white'], + display: true, + font: [{ size: 14 }, { size: 11 }, { lineHeight: 2, size: 14 }], + formatter(ctx) { + const netPerformancePercentWithCurrencyEffect = + ctx.raw._data.netPerformancePercentWithCurrencyEffect; + + return [ + ctx.raw._data.name, + ctx.raw._data.symbol, + `${netPerformancePercentWithCurrencyEffect > 0 ? '+' : ''}${(ctx.raw._data.netPerformancePercentWithCurrencyEffect * 100).toFixed(2)}%` + ]; + }, + position: 'top' + }, + spacing: 1, + tree: this.holdings + } + ] + }; + + if (this.chartCanvas) { + if (this.chart) { + this.chart.data = data; + this.chart.update(); + } else { + this.chart = new Chart(this.chartCanvas.nativeElement, { + data, + options: { + animation: false, + onClick: (event, activeElements) => { + try { + const dataIndex = activeElements[0].index; + const datasetIndex = activeElements[0].datasetIndex; + + const dataset = orderBy( + event.chart.data.datasets[datasetIndex].tree, + ['allocationInPercentage'], + ['desc'] + ); + + const dataSource: DataSource = dataset[dataIndex].dataSource; + const symbol: string = dataset[dataIndex].symbol; + + this.treemapChartClicked.emit({ dataSource, symbol }); + } catch {} + }, + onHover: (event, chartElement) => { + if (this.cursor) { + event.native.target.style.cursor = chartElement[0] + ? this.cursor + : 'default'; + } + }, + plugins: { + tooltip: { + enabled: false + } + } + }, + type: 'treemap' + }); + } + } + + this.isLoading = false; + } +} diff --git a/libs/ui/src/lib/trend-indicator/trend-indicator.component.html b/libs/ui/src/lib/trend-indicator/trend-indicator.component.html index 761b3f232..b9f65a2ea 100644 --- a/libs/ui/src/lib/trend-indicator/trend-indicator.component.html +++ b/libs/ui/src/lib/trend-indicator/trend-indicator.component.html @@ -8,9 +8,9 @@ }" /> } @else { - @if (marketState === 'closed' && range === '1d') { + @if (marketState === 'closed' && dateRange === '1d') { - } @else if (marketState === 'delayed' && range === '1d') { + } @else if (marketState === 'delayed' && dateRange === '1d') { } @else if (value <= -0.0005) { = 0 ? this.precision : 2, + minimumFractionDigits: + this.precision >= 0 ? this.precision : 2 } ); } catch {} @@ -68,8 +70,10 @@ export class GfValueComponent implements OnChanges { this.formattedValue = (this.absoluteValue * 100).toLocaleString( this.locale, { - maximumFractionDigits: 2, - minimumFractionDigits: 2 + maximumFractionDigits: + this.precision >= 0 ? this.precision : 2, + minimumFractionDigits: + this.precision >= 0 ? this.precision : 2 } ); } catch {} @@ -77,8 +81,8 @@ export class GfValueComponent implements OnChanges { } else if (this.isCurrency) { try { this.formattedValue = this.value?.toLocaleString(this.locale, { - maximumFractionDigits: 2, - minimumFractionDigits: 2 + maximumFractionDigits: this.precision >= 0 ? this.precision : 2, + minimumFractionDigits: this.precision >= 0 ? this.precision : 2 }); } catch {} } else if (this.isPercent) { @@ -86,12 +90,12 @@ export class GfValueComponent implements OnChanges { this.formattedValue = (this.value * 100).toLocaleString( this.locale, { - maximumFractionDigits: 2, - minimumFractionDigits: 2 + maximumFractionDigits: this.precision >= 0 ? this.precision : 2, + minimumFractionDigits: this.precision >= 0 ? this.precision : 2 } ); } catch {} - } else if (this.precision || this.precision === 0) { + } else if (this.precision >= 0) { try { this.formattedValue = this.value?.toLocaleString(this.locale, { maximumFractionDigits: this.precision, @@ -135,6 +139,8 @@ export class GfValueComponent implements OnChanges { this.formattedValue = ''; this.isNumber = false; this.isString = false; + this.locale = this.locale || getLocale(); + this.precision = this.precision >= 0 ? this.precision : undefined; this.useAbsoluteValue = false; } } diff --git a/nx.json b/nx.json index 5adb8983b..17123544e 100644 --- a/nx.json +++ b/nx.json @@ -61,12 +61,13 @@ "production": [ "default", "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", - "!{projectRoot}/tsconfig.spec.json", - "!{projectRoot}/jest.config.[jt]s", - "!{projectRoot}/.storybook/**/*", "!{projectRoot}/**/*.stories.@(js|jsx|ts|tsx|mdx)", + "!{projectRoot}/.storybook/**/*", + "!{projectRoot}/jest.config.[jt]s", + "!{projectRoot}/src/test-setup.[jt]s", "!{projectRoot}/tsconfig.storybook.json", - "!{projectRoot}/src/test-setup.[jt]s" + "!{projectRoot}/tsconfig.spec.json", + "!{projectRoot}/webpack.config.js" ] }, "nxCloudAccessToken": "Mjg0ZGQ2YjAtNGI4NS00NmYwLThhOWEtMWZmNmQzODM4YzU4fHJlYWQ=", diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..36e62825c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,57436 @@ +{ + "name": "ghostfolio", + "version": "2.106.0-beta.2", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "ghostfolio", + "version": "2.106.0-beta.2", + "hasInstallScript": true, + "license": "AGPL-3.0", + "dependencies": { + "@angular/animations": "18.1.1", + "@angular/cdk": "18.1.1", + "@angular/common": "18.1.1", + "@angular/compiler": "18.1.1", + "@angular/core": "18.1.1", + "@angular/forms": "18.1.1", + "@angular/material": "18.1.1", + "@angular/platform-browser": "18.1.1", + "@angular/platform-browser-dynamic": "18.1.1", + "@angular/router": "18.1.1", + "@angular/service-worker": "18.1.1", + "@codewithdan/observable-store": "2.2.15", + "@dfinity/agent": "0.15.7", + "@dfinity/auth-client": "0.15.7", + "@dfinity/candid": "0.15.7", + "@dfinity/identity": "0.15.7", + "@dfinity/principal": "0.15.7", + "@dinero.js/currencies": "2.0.0-alpha.8", + "@internationalized/number": "3.5.2", + "@nestjs/bull": "10.0.1", + "@nestjs/cache-manager": "2.1.0", + "@nestjs/common": "10.1.3", + "@nestjs/config": "3.0.0", + "@nestjs/core": "10.1.3", + "@nestjs/event-emitter": "2.0.4", + "@nestjs/jwt": "10.1.0", + "@nestjs/passport": "10.0.3", + "@nestjs/platform-express": "10.1.3", + "@nestjs/schedule": "3.0.2", + "@nestjs/serve-static": "4.0.0", + "@prisma/client": "5.18.0", + "@simplewebauthn/browser": "9.0.1", + "@simplewebauthn/server": "9.0.3", + "@stripe/stripe-js": "3.5.0", + "alphavantage": "2.2.0", + "await-lock": "^2.2.2", + "big.js": "6.2.1", + "body-parser": "1.20.2", + "bootstrap": "4.6.0", + "bull": "4.10.4", + "cache-manager": "3.4.3", + "cache-manager-redis-store": "2.0.0", + "chart.js": "4.2.0", + "chartjs-adapter-date-fns": "3.0.0", + "chartjs-chart-treemap": "2.3.1", + "chartjs-plugin-annotation": "2.1.2", + "chartjs-plugin-datalabels": "2.2.0", + "cheerio": "1.0.0-rc.12", + "class-transformer": "0.5.1", + "class-validator": "0.14.1", + "color": "4.2.3", + "countries-and-timezones": "3.4.1", + "countries-list": "3.1.0", + "countup.js": "2.8.0", + "date-fns": "3.6.0", + "envalid": "7.3.1", + "google-spreadsheet": "3.2.0", + "got": "11.8.6", + "helmet": "7.0.0", + "http-status-codes": "2.3.0", + "ionicons": "7.4.0", + "jsonpath": "1.1.1", + "lodash": "4.17.21", + "marked": "12.0.2", + "ms": "3.0.0-canary.1", + "ng-extract-i18n-merge": "2.12.0", + "ngx-device-detector": "8.0.0", + "ngx-markdown": "18.0.0", + "ngx-skeleton-loader": "7.0.0", + "ngx-stripe": "18.0.0", + "open-color": "1.9.1", + "papaparse": "5.3.1", + "passport": "0.7.0", + "passport-google-oauth20": "2.0.0", + "passport-jwt": "4.0.1", + "prisma": "5.18.0", + "reflect-metadata": "0.1.13", + "rxjs": "7.5.6", + "stripe": "15.11.0", + "svgmap": "2.6.0", + "twitter-api-v2": "1.14.2", + "uuid": "9.0.1", + "yahoo-finance2": "2.11.3", + "zone.js": "0.14.10" + }, + "devDependencies": { + "@angular-devkit/build-angular": "18.1.1", + "@angular-devkit/core": "18.1.1", + "@angular-devkit/schematics": "18.1.1", + "@angular-eslint/eslint-plugin": "18.1.0", + "@angular-eslint/eslint-plugin-template": "18.1.0", + "@angular-eslint/template-parser": "18.1.0", + "@angular/cli": "18.1.1", + "@angular/compiler-cli": "18.1.1", + "@angular/language-service": "18.1.1", + "@angular/localize": "18.1.1", + "@angular/pwa": "18.1.1", + "@nestjs/schematics": "10.0.1", + "@nestjs/testing": "10.1.3", + "@nx/angular": "19.5.6", + "@nx/cypress": "19.5.6", + "@nx/eslint-plugin": "19.5.6", + "@nx/jest": "19.5.6", + "@nx/js": "19.5.6", + "@nx/nest": "19.5.6", + "@nx/node": "19.5.6", + "@nx/storybook": "19.5.6", + "@nx/web": "19.5.6", + "@nx/workspace": "19.5.6", + "@schematics/angular": "18.1.1", + "@simplewebauthn/types": "9.0.1", + "@storybook/addon-essentials": "8.2.6", + "@storybook/angular": "8.2.6", + "@storybook/core-server": "8.2.6", + "@trivago/prettier-plugin-sort-imports": "4.3.0", + "@types/big.js": "6.2.2", + "@types/body-parser": "1.19.5", + "@types/cache-manager": "3.4.2", + "@types/color": "3.0.6", + "@types/google-spreadsheet": "3.1.5", + "@types/jest": "29.4.4", + "@types/lodash": "4.17.7", + "@types/node": "20.14.10", + "@types/papaparse": "5.3.7", + "@types/passport-google-oauth20": "2.0.16", + "@typescript-eslint/eslint-plugin": "6.21.0", + "@typescript-eslint/parser": "6.21.0", + "codelyzer": "6.0.1", + "cypress": "6.2.1", + "eslint": "8.57.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-cypress": "2.15.1", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-storybook": "0.6.15", + "jest": "29.7.0", + "jest-environment-jsdom": "29.7.0", + "jest-preset-angular": "14.1.0", + "nx": "19.5.6", + "prettier": "3.3.3", + "prettier-plugin-organize-attributes": "1.0.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "replace-in-file": "7.0.1", + "shx": "0.3.4", + "storybook": "8.2.6", + "ts-jest": "29.1.0", + "ts-node": "10.9.2", + "tslib": "2.6.0", + "typescript": "5.5.3", + "webpack-bundle-analyzer": "4.10.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "devOptional": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1801.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1801.1.tgz", + "integrity": "sha512-7dIQ++D5PTzLgs4sEvi7pMpG4nY4CTnzLKbqKDI++fJKa7FEpVjje1tsr1r8ap8xD0QXr6sIxmQ4hdLeWwPhDQ==", + "dependencies": { + "@angular-devkit/core": "18.1.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/architect/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/@angular-devkit/build-angular": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.1.1.tgz", + "integrity": "sha512-sd/eOzitC8yN9xl/TbbuDxXL1LRZCX3gwKAddV1fJSrXJHEmDM7PhdQbNEPd2O58evMKSiMZK91WnYN0lhTZtw==", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1801.1", + "@angular-devkit/build-webpack": "0.1801.1", + "@angular-devkit/core": "18.1.1", + "@angular/build": "18.1.1", + "@babel/core": "7.24.7", + "@babel/generator": "7.24.7", + "@babel/helper-annotate-as-pure": "7.24.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-transform-async-generator-functions": "7.24.7", + "@babel/plugin-transform-async-to-generator": "7.24.7", + "@babel/plugin-transform-runtime": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/runtime": "7.24.7", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "18.1.1", + "@vitejs/plugin-basic-ssl": "1.1.0", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.19", + "babel-loader": "9.1.3", + "browserslist": "^4.21.5", + "copy-webpack-plugin": "12.0.2", + "critters": "0.0.24", + "css-loader": "7.1.2", + "esbuild-wasm": "0.21.5", + "fast-glob": "3.3.2", + "http-proxy-middleware": "3.0.0", + "https-proxy-agent": "7.0.5", + "istanbul-lib-instrument": "6.0.2", + "jsonc-parser": "3.3.1", + "karma-source-map-support": "1.4.0", + "less": "4.2.0", + "less-loader": "12.2.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.3.1", + "magic-string": "0.30.10", + "mini-css-extract-plugin": "2.9.0", + "mrmime": "2.0.0", + "open": "10.1.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.2", + "piscina": "4.6.1", + "postcss": "8.4.38", + "postcss-loader": "8.1.1", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.77.6", + "sass-loader": "14.2.1", + "semver": "7.6.2", + "source-map-loader": "5.0.0", + "source-map-support": "0.5.21", + "terser": "5.29.2", + "tree-kill": "1.2.2", + "tslib": "2.6.3", + "undici": "6.19.2", + "vite": "5.3.2", + "watchpack": "2.4.1", + "webpack": "5.92.1", + "webpack-dev-middleware": "7.2.1", + "webpack-dev-server": "5.0.4", + "webpack-merge": "5.10.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.21.5" + }, + "peerDependencies": { + "@angular/compiler-cli": "^18.0.0", + "@angular/localize": "^18.0.0", + "@angular/platform-server": "^18.0.0", + "@angular/service-worker": "^18.0.0", + "@web/test-runner": "^0.18.0", + "browser-sync": "^3.0.2", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "karma": "^6.3.0", + "ng-packagr": "^18.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=5.4 <5.6" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@web/test-runner": { + "optional": true + }, + "browser-sync": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@angular/build": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.1.1.tgz", + "integrity": "sha512-DbgFqpaZE6g8VZaPboB54cVuERlZV6SAkNPEaMT/53cnCxL4QdSQs1aT9Wy8G1Ksr4WI5AZMdPic/TVF0KBGGQ==", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1801.1", + "@babel/core": "7.24.7", + "@babel/helper-annotate-as-pure": "7.24.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-syntax-import-attributes": "7.24.7", + "@inquirer/confirm": "3.1.11", + "@vitejs/plugin-basic-ssl": "1.1.0", + "ansi-colors": "4.1.3", + "browserslist": "^4.23.0", + "critters": "0.0.24", + "esbuild": "0.21.5", + "fast-glob": "3.3.2", + "https-proxy-agent": "7.0.5", + "lmdb": "3.0.12", + "magic-string": "0.30.10", + "mrmime": "2.0.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.2", + "piscina": "4.6.1", + "rollup": "4.18.0", + "sass": "1.77.6", + "semver": "7.6.2", + "undici": "6.19.2", + "vite": "5.3.2", + "watchpack": "2.4.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^18.0.0", + "@angular/localize": "^18.0.0", + "@angular/platform-server": "^18.0.0", + "@angular/service-worker": "^18.0.0", + "less": "^4.2.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=5.4 <5.6" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@inquirer/confirm": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.11.tgz", + "integrity": "sha512-3wWw10VPxQP279FO4bzWsf8YjIAq7NdwATJ4xS2h1uwsXZu/RmtOVV95rZ7yllS1h/dzu+uLewjMAzNDEj8h2w==", + "dependencies": { + "@inquirer/core": "^8.2.4", + "@inquirer/type": "^1.3.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@inquirer/core": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-8.2.4.tgz", + "integrity": "sha512-7vsXSfxtrrbwMTirfaKwPcjqJy7pzeuF/bP62yo1NQrRJ5HjmMlrhZml/Ljm9ODc1RnbhJlTeSnCkjtFddKjwA==", + "dependencies": { + "@inquirer/figures": "^1.0.3", + "@inquirer/type": "^1.3.3", + "@types/mute-stream": "^0.0.4", + "@types/node": "^20.14.9", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-spinners": "^2.9.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "picocolors": "^1.0.1", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@angular-devkit/build-angular/node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/@angular-devkit/build-angular/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/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1801.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1801.1.tgz", + "integrity": "sha512-9qImQciytrf433+h1aAWMD/Qn9cx7amlLtHX9j6ToBMWxY3L9ZKzwlCZ3Q+d6VWs7QrN/X9j8VkJl913yuXeCQ==", + "dependencies": { + "@angular-devkit/architect": "0.1801.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^5.0.2" + } + }, + "node_modules/@angular-devkit/build-webpack/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/@angular-devkit/core": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.1.1.tgz", + "integrity": "sha512-YFzn/+8LezX7ZJhMQisvrqfkxJm6+JOtbWFj8K/luK0rTDmE8Z9n9r6kJ36FnHcLJ5MvvVaBc7n1v1wnzdqXpg==", + "dependencies": { + "ajv": "8.16.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/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/@angular-devkit/schematics": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.1.1.tgz", + "integrity": "sha512-r+DAvVvv+hOuhh19PefPOKa/zDkvzLHz/YOLGq/k1KfJRtNtjCKiDsXp1s6HSzYdJD1H10wnzUIh48uvxfwH5Q==", + "dependencies": { + "@angular-devkit/core": "18.1.1", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.10", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/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/@angular-eslint/bundled-angular-compiler": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.1.0.tgz", + "integrity": "sha512-2JNlMEnCvLz8q1Qa4sWR9BddtpDWMKYguMzHJKm5zUDwH90CgWHolQlXumtpqbL8r78xd57t35IkbEFLF3UsQw==", + "dev": true + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.1.0.tgz", + "integrity": "sha512-rV1RLhcg9TTNE5hB7pMddkJvnH0+q3FnhhWVE+IJNkzlGxEktDwVx7hG17sy8YkRS2CxR0P6Dr5C6wMBdEwAsw==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.1.0", + "@angular-eslint/utils": "18.1.0" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.37", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.1.0.tgz", + "integrity": "sha512-k7Zq2JRd4jjg6PB0M24UnnmdhCeRFQ7Q4GlMGmeJLQGan+HFKDBu973yN2/Vmk4RYi+rTVuin0gy4HBeiGiiaw==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.1.0", + "@angular-eslint/utils": "18.1.0", + "aria-query": "5.3.0", + "axobject-query": "4.0.0" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.37", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/template-parser": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.1.0.tgz", + "integrity": "sha512-YqBNusbt3vWbm8eo2dICytU8hP8/ez4uETkwKpMvB+H1E0rYaD2F17D47YO9BBFUHCNzAGIBlA8BWDN1kLEMlw==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.1.0", + "eslint-scope": "^8.0.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/utils": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.1.0.tgz", + "integrity": "sha512-pTCwbm9TPU1B0fxwhJg5qnJA2ILUJR0cT+rc7kejV0Xwl6RBXpMrzbuMzB9CucEY1au8hAR55I+Sc9znwSwuIw==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.1.0" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.37", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular/animations": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.1.1.tgz", + "integrity": "sha512-3BdB6lB7TT1BQFb8C3XyJ5A9YSrOx951NzcXnzFfTNiq1C+VeR455LtdNiDTPa9Vf5Df1cJb6ReJ1z17ztx+6Q==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "18.1.1" + } + }, + "node_modules/@angular/cdk": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.1.1.tgz", + "integrity": "sha512-IaDjvRUgAoKnEeafrnBX+hjTR+1M3O3fV3AybBCjN4NuiPtuyOJiTMg0cTv6RbluJ/SenbT4MQq3tMpOsa9i4w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^18.0.0 || ^19.0.0", + "@angular/core": "^18.0.0 || ^19.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.1.1.tgz", + "integrity": "sha512-sRmc5meBLRQgFKq6te1UM4JPHWPERrg1pjYStft/qRKkOyvgpNzq3Ol6hN3zNb2ds2bAgjKhEAlOwSOZuw1cqQ==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1801.1", + "@angular-devkit/core": "18.1.1", + "@angular-devkit/schematics": "18.1.1", + "@inquirer/prompts": "5.0.7", + "@listr2/prompt-adapter-inquirer": "2.0.13", + "@schematics/angular": "18.1.1", + "@yarnpkg/lockfile": "1.1.0", + "ini": "4.1.3", + "jsonc-parser": "3.3.1", + "listr2": "8.2.3", + "npm-package-arg": "11.0.2", + "npm-pick-manifest": "9.0.1", + "pacote": "18.0.6", + "resolve": "1.22.8", + "semver": "7.6.2", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.1.1.tgz", + "integrity": "sha512-qNfYAapvIi8JyQToSqbg3O5dRXaElv/yNp2evvBGn4UO/liHjdNV/DzgCdyKP7uVbYrR0W3bzj++SxVR3mrATQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "18.1.1", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.1.1.tgz", + "integrity": "sha512-Nc2GZhXXi3O2otZIWgOJoGZ+88+R6YXGc70dibEpMvmDjKfYpc4pBjuYzaGntdiTYAzVOVTTv09dwTP6YOpPRA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "18.1.1" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.1.1.tgz", + "integrity": "sha512-TMPrN4HLa5raxW133bY3AxH1Gar36nmy0ikttMeSotLSlC5Y4SCYaiMY7QaPytD1iEGvqAd/rP+YuXzOIuCM/w==", + "dependencies": { + "@babel/core": "7.24.7", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/compiler": "18.1.1", + "typescript": ">=5.4 <5.6" + } + }, + "node_modules/@angular/compiler-cli/node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + }, + "node_modules/@angular/core": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.1.1.tgz", + "integrity": "sha512-/JFQ49fVIthZzdggl7FOCYAjaynbkRcCyiri85kAyTIvJ6aMSIiEKwJCw45WI5ICf2HtC9kz6dr0OKhMR6SeiA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.14.0" + } + }, + "node_modules/@angular/forms": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.1.1.tgz", + "integrity": "sha512-CceH57IKeH2Zq8QFFkcJMvBbjxVRCtqzAqSETfShWzrt+ITrz4c6EnUMbj30iz+ntn/R+qGAp3n/t0D7HtTS6Q==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "18.1.1", + "@angular/core": "18.1.1", + "@angular/platform-browser": "18.1.1", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/language-service": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.1.1.tgz", + "integrity": "sha512-SK9mKBB+fWXBXgdDLPZQI/peHqeQLheseSUPhZQyARDR6CrUvhB7MSRWERhn8832fZ6BoCE01p1obsYLWeXNbw==", + "dev": true, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + } + }, + "node_modules/@angular/localize": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-18.1.1.tgz", + "integrity": "sha512-KuUXPWq91XrSsYPvi0tVp+dlG2F+doxXN/FOg+RhUh3X4Qdxy93OWPTMmkWxJ6U9rbXFBKqxfd0+Vnt/BypMmg==", + "devOptional": true, + "dependencies": { + "@babel/core": "7.24.7", + "@types/babel__core": "7.20.5", + "fast-glob": "3.3.2", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/compiler": "18.1.1", + "@angular/compiler-cli": "18.1.1" + } + }, + "node_modules/@angular/material": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.1.1.tgz", + "integrity": "sha512-9JdUEUZheMMk+Tu8oDLRdI2eXOeI9d2BjEZYkoDif4iB7TCldmcKJyTYXs3kSZz6B53vup/vgKJUPBHLkIDD+A==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/auto-init": "15.0.0-canary.7f224ddd4.0", + "@material/banner": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/card": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/chips": "15.0.0-canary.7f224ddd4.0", + "@material/circular-progress": "15.0.0-canary.7f224ddd4.0", + "@material/data-table": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dialog": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/drawer": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/fab": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/form-field": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/image-list": "15.0.0-canary.7f224ddd4.0", + "@material/layout-grid": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/radio": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/segmented-button": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/slider": "15.0.0-canary.7f224ddd4.0", + "@material/snackbar": "15.0.0-canary.7f224ddd4.0", + "@material/switch": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-bar": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/textfield": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/tooltip": "15.0.0-canary.7f224ddd4.0", + "@material/top-app-bar": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^18.0.0 || ^19.0.0", + "@angular/cdk": "18.1.1", + "@angular/common": "^18.0.0 || ^19.0.0", + "@angular/core": "^18.0.0 || ^19.0.0", + "@angular/forms": "^18.0.0 || ^19.0.0", + "@angular/platform-browser": "^18.0.0 || ^19.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.1.1.tgz", + "integrity": "sha512-9FG2+NSWJXo+zu/W7VQE0UpaWejbV62AXW7218FBZXOdkdID5oNxHf0QdJ3hCaIJw1dKZEG49BTq005d9yQbew==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/animations": "18.1.1", + "@angular/common": "18.1.1", + "@angular/core": "18.1.1" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.1.1.tgz", + "integrity": "sha512-+nnWGLz7dhkRbel8qGIgfQa5PoE4ZMl0ClDw8HR0R5T3w+v0K6trPSjWIPDHm5ex25RvuLNmoUGu29drlHN3Fw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "18.1.1", + "@angular/compiler": "18.1.1", + "@angular/core": "18.1.1", + "@angular/platform-browser": "18.1.1" + } + }, + "node_modules/@angular/pwa": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-18.1.1.tgz", + "integrity": "sha512-GFRpjUw1JfYdv+iJ2ImPk4eXpw79hQX/BjF0/hubZh1/LOEVAJnUi4Nyjlj9VqaxJY4/GVTyvE3fppOTnhmRsg==", + "dev": true, + "dependencies": { + "@angular-devkit/schematics": "18.1.1", + "@schematics/angular": "18.1.1", + "parse5-html-rewriting-stream": "7.0.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/cli": "^18.0.0" + }, + "peerDependenciesMeta": { + "@angular/cli": { + "optional": true + } + } + }, + "node_modules/@angular/router": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.1.1.tgz", + "integrity": "sha512-XaPL+jzmanQa3y9JSMpyxcTqHTNLiGLW6yzcZ0hiKDRpCJ044cKLMK5Ruk84LfzvVDS//tGj46OYAwrPGmBFMg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "18.1.1", + "@angular/core": "18.1.1", + "@angular/platform-browser": "18.1.1", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/service-worker": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-18.1.1.tgz", + "integrity": "sha512-SCSWHns2tIYWs6duCVWOmQIOf6fVrqObkZ8ajpQ42vBLawpSgJsSew6E1yquMO6UDi/lph6ZRdTr5Vqt7CiboQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "bin": { + "ngsw-config": "ngsw-config.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "18.1.1", + "@angular/core": "18.1.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "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.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", + "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.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "dependencies": { + "@babel/types": "^7.25.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "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.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz", + "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-decorators": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "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-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", + "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "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-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", + "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "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.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "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.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "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.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz", + "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-flow": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz", + "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/plugin-syntax-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", + "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz", + "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-flow-strip-types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", + "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/register/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/register/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.25.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", + "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", + "dependencies": { + "@babel/types": "^7.25.4", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "devOptional": true + }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", + "optional": true + }, + "node_modules/@codewithdan/observable-store": { + "version": "2.2.15", + "resolved": "https://registry.npmjs.org/@codewithdan/observable-store/-/observable-store-2.2.15.tgz", + "integrity": "sha512-LVCSMZzTCvoDo5n7YDmtIIEhTmvJ8O21k36Vwu/A4kumdXQ1YVs4sKoSK3vlINZPL4AYY2MRsBVtvre4QIETFw==", + "peerDependencies": { + "rxjs": ">=6.4.0 <8" + } + }, + "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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@cypress/request": { + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@cypress/request/node_modules/qs": { + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", + "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", + "deprecated": "when using stringify with arrayFormat comma, `[]` is appended on single-item arrays. Upgrade to v6.11.0 or downgrade to v6.10.4 to fix.", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@cypress/request/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@dfinity/agent": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.15.7.tgz", + "integrity": "sha512-w34yvlUTpPBG8nLOD0t/ao3k2xonOFq4QGvfJ1HiS/nIggdza/3xC3nLBszGrjVYWj1jqu8BLFvQXCAeWin75A==", + "dependencies": { + "base64-arraybuffer": "^0.2.0", + "bignumber.js": "^9.0.0", + "borc": "^2.1.1", + "js-sha256": "0.9.0", + "simple-cbor": "^0.4.1", + "ts-node": "^10.8.2" + }, + "peerDependencies": { + "@dfinity/candid": "^0.15.7", + "@dfinity/principal": "^0.15.7" + } + }, + "node_modules/@dfinity/auth-client": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.15.7.tgz", + "integrity": "sha512-f6cRqXayCf+7+9gNcDnAZZwJrgBYKIzfxjxeRLlpsueQeo+E/BX2yVSANxzTkCNc4U3p+ttHI1RNtasLunYTcA==", + "dependencies": { + "idb": "^7.0.2" + }, + "peerDependencies": { + "@dfinity/agent": "^0.15.7", + "@dfinity/identity": "^0.15.7", + "@dfinity/principal": "^0.15.7" + } + }, + "node_modules/@dfinity/candid": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.15.7.tgz", + "integrity": "sha512-lTcjK/xrSyT7wvUQ2pApG+yklQAwxaofQ04D1IWv0/8gKbY0eUbh8G2w6+CypJ15Hb1CH24ijUj8nWdeX/z3jg==", + "dependencies": { + "ts-node": "^10.8.2" + } + }, + "node_modules/@dfinity/identity": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.15.7.tgz", + "integrity": "sha512-kBAkx9wq78jSQf6T5aayLyWm8YgtOZw8bW6+OuzX6tR3hkAEa85A9TcKA7BjkmMWSIskjEDVQub4fFfKWS2vOQ==", + "dependencies": { + "borc": "^2.1.1", + "js-sha256": "^0.9.0", + "tweetnacl": "^1.0.1" + }, + "peerDependencies": { + "@dfinity/agent": "^0.15.7", + "@dfinity/principal": "^0.15.7", + "@peculiar/webcrypto": "^1.4.0" + } + }, + "node_modules/@dfinity/principal": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.15.7.tgz", + "integrity": "sha512-6/AkYzpGEH6Jw/0+B/EeeQn+5u2GDDvRLt1kQPhIG4txQYFnOy04H3VvyrymmfAj6/CXUgrOrux6OxgYSLYVJg==", + "dependencies": { + "js-sha256": "^0.9.0", + "ts-node": "^10.8.2" + } + }, + "node_modules/@dinero.js/currencies": { + "version": "2.0.0-alpha.8", + "resolved": "https://registry.npmjs.org/@dinero.js/currencies/-/currencies-2.0.0-alpha.8.tgz", + "integrity": "sha512-zApiqtuuPwjiM9LJA5/kNcT48VSHRiz2/mktkXjIpfxrJKzthXybUAgEenExIH6dYhLDgVmsLQZtZFOsdYl0Ag==" + }, + "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/@emnapi/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz", + "integrity": "sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==", + "dev": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", + "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@hexagon/base64": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", + "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@inquirer/checkbox": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.4.7.tgz", + "integrity": "sha512-5YwCySyV1UEgqzz34gNsC38eKxRBtlRDpJLlKcRtTjlYA/yDKuc1rfw+hjw+2WJxbAZtaDPsRl5Zk7J14SBoBw==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.2", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/confirm": { + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.22.tgz", + "integrity": "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.0.10.tgz", + "integrity": "sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA==", + "dev": true, + "dependencies": { + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.2", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.1.0", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-spinners": "^2.9.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core/node_modules/@types/node": { + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@inquirer/core/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/@inquirer/editor": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-2.1.22.tgz", + "integrity": "sha512-K1QwTu7GCK+nKOVRBp5HY9jt3DXOfPGPr6WRDrPImkcJRelG9UTx2cAtK1liXmibRrzJlTWOwqgWT3k2XnS62w==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2", + "external-editor": "^3.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/expand": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-2.1.22.tgz", + "integrity": "sha512-wTZOBkzH+ItPuZ3ZPa9lynBsdMp6kQ9zbjVPYEtSBG7UulGjg2kQiAnUjgyG4SlntpTce5bOmXAPvE4sguXjpA==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz", + "integrity": "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.2.9.tgz", + "integrity": "sha512-7Z6N+uzkWM7+xsE+3rJdhdG/+mQgejOVqspoW+w0AbSZnL6nq5tGMEVASaYVWbkoSzecABWwmludO2evU3d31g==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/password": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-2.1.22.tgz", + "integrity": "sha512-5Fxt1L9vh3rAKqjYwqsjU4DZsEvY/2Gll+QkqR4yEpy6wvzLxdSgFhUcxfDAOtO4BEoTreWoznC0phagwLU5Kw==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/prompts": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.0.7.tgz", + "integrity": "sha512-GFcigCxJTKCH3aECzMIu4FhgLJWnFvMXzpI4CCSoELWFtkOOU2P+goYA61+OKpGrB8fPE7q6n8zAXBSlZRrHjQ==", + "dev": true, + "dependencies": { + "@inquirer/checkbox": "^2.3.7", + "@inquirer/confirm": "^3.1.11", + "@inquirer/editor": "^2.1.11", + "@inquirer/expand": "^2.1.11", + "@inquirer/input": "^2.1.11", + "@inquirer/password": "^2.1.11", + "@inquirer/rawlist": "^2.1.11", + "@inquirer/select": "^2.3.7" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/rawlist": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.2.4.tgz", + "integrity": "sha512-pb6w9pWrm7EfnYDgQObOurh2d2YH07+eDo3xQBsNAM2GRhliz6wFXGi1thKQ4bN6B0xDd6C3tBsjdr3obsCl3Q==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/select": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.4.7.tgz", + "integrity": "sha512-JH7XqPEkBpNWp3gPCqWqY8ECbyMoFcCZANlL6pV9hf59qK6dGmkOlx1ydyhY+KZ0c5X74+W6Mtp+nm2QX0/MAQ==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.2", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.2.tgz", + "integrity": "sha512-w9qFkumYDCNyDZmNQjf/n6qQuvQ4dMC3BJesY4oF+yr0CxR5vxujflAVeIcS6U336uzi9GM0kAfZlLrZ9UTkpA==", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@internationalized/number": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.2.tgz", + "integrity": "sha512-4FGHTi0rOEX1giSkt5MH4/te0eHBq3cvAYsfLlpguV6pzJAReXymiYpE5wPCqKqjkUO3PIsyvk+tBiIV1pZtbA==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "devOptional": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "devOptional": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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==", + "devOptional": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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==", + "devOptional": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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==", + "devOptional": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "devOptional": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "devOptional": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "devOptional": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "devOptional": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "devOptional": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "devOptional": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "devOptional": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "devOptional": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "devOptional": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "devOptional": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "devOptional": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "devOptional": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "devOptional": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "devOptional": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.3.0.tgz", + "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + }, + "node_modules/@levischuck/tiny-cbor": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz", + "integrity": "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==" + }, + "node_modules/@listr2/prompt-adapter-inquirer": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.13.tgz", + "integrity": "sha512-nAl6teTt7EWSjttNavAnv3uFR3w3vPP3OTYmHyPNHzKhAj2NoBDHmbS3MGpvvO8KXXPASnHjEGrrKrdKTMKPnQ==", + "dev": true, + "dependencies": { + "@inquirer/type": "^1.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 6" + } + }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.0.12.tgz", + "integrity": "sha512-vgTwzNUD3Hy4aqtGhX2+nV/usI0mwy3hDRuTjs8VcK0BLiMVEpNQXgzwlWEgPmA8AAPloUgyOs2nK5clJF5oIg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.0.12.tgz", + "integrity": "sha512-qOt0hAhj2ZLY6aEWu85rzt5zcyCAQITMhCMEPNlo1tuYekpVAdkQNiwXxEkCjBYvwTskvXuwXOOUpjuSc+aJnA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.0.12.tgz", + "integrity": "sha512-Ggd/UXpE+alMncbELCXA3OKpDj9bDBR3qVO7WRTxstloDglRAHfZmUJgTkeaNKjFO1JHqS7AKy0jba9XebZB1w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.0.12.tgz", + "integrity": "sha512-Qy4cFXFe9h1wAWMsojex8x1ifvw2kqiZv686YiRTdQEzAfc3vJASHFcD/QejHUCx7YHMYdnUoCS45rG2AiGDTQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.0.12.tgz", + "integrity": "sha512-c+noT9IofktxktFllKHFmci8ka2SYGSLN17pj/KSl1hg7mmfAiGp4xxFxEwMLTb+SX95vP1DFiR++1I3WLVxvA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.12.tgz", + "integrity": "sha512-CO3MFV8gUx16NU/CyyuumAKblESwvoGVA2XhQKZ976OTOxaTbb8F8D3f0iiZ4MYqsN74jIrFuCmXpPnpjbhfOQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@material/animation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/auto-init": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/banner": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/base": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", + "dependencies": { + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/card": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", + "dependencies": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/checkbox": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/chips": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/circular-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/data-table": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/density": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dialog": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dom": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/drawer": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/elevation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/fab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/feature-targeting": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/floating-label": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/focus-ring": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", + "dependencies": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0" + } + }, + "node_modules/@material/form-field": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/icon-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/image-list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/layout-grid": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/line-ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/linear-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu-surface": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/notched-outline": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/progress-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/radio": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/rtl": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", + "dependencies": { + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/segmented-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/select": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/shape": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/slider": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/snackbar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/switch": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-scroller": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/textfield": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/theme": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tokens": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", + "dependencies": { + "@material/elevation": "15.0.0-canary.7f224ddd4.0" + } + }, + "node_modules/@material/tooltip": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/top-app-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/touch-target": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/typography": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", + "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", + "dev": true, + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.2.8.tgz", + "integrity": "sha512-6G1qTo1HWvRcN5fzE+SZgvgzSPoq5YqNx8hFL8BttJmnd3wj4SUOFiikAsXhdVrzSK+Zuzg6pipkiLH1m+pbtw==", + "dev": true, + "dependencies": { + "@module-federation/sdk": "0.2.8" + } + }, + "node_modules/@module-federation/dts-plugin": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.2.8.tgz", + "integrity": "sha512-qY1Wbqo0yu9nh6KR8K19t5T4tYtlUbmcNdcaCweISCyAbH99TrhpQkJ89NY0TLtnxQ6uayIYayqAWS7vzyDXVw==", + "dev": true, + "dependencies": { + "@module-federation/managers": "0.2.8", + "@module-federation/sdk": "0.2.8", + "@module-federation/third-party-dts-extractor": "0.2.8", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.6.7", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "2.11.0", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.17.1" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/@module-federation/dts-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@module-federation/dts-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@module-federation/dts-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@module-federation/dts-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@module-federation/enhanced": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.2.8.tgz", + "integrity": "sha512-6fGM/GiKw6LZiBe6DF8Petz6ih/Yyf3q2htLrx+hrWoDWfWEoWlLvoCUsVkY2UgMCLKid7Fm3Auc4w8A4aRjvQ==", + "dev": true, + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "0.2.8", + "@module-federation/dts-plugin": "0.2.8", + "@module-federation/managers": "0.2.8", + "@module-federation/manifest": "0.2.8", + "@module-federation/rspack": "0.2.8", + "@module-federation/runtime-tools": "0.2.8", + "@module-federation/sdk": "0.2.8", + "btoa": "^1.2.1", + "upath": "2.0.1" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/@module-federation/managers": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.2.8.tgz", + "integrity": "sha512-S5GXqt2Vrs1+uNXHw7UzZ7m3fs8H3nxNsNGQ0j5+HiT5yA7uRTY1AZJZCGAHzG6XImJ1DzL/SW1acM2Hwj0aAw==", + "dev": true, + "dependencies": { + "@module-federation/sdk": "0.2.8", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" + } + }, + "node_modules/@module-federation/manifest": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.2.8.tgz", + "integrity": "sha512-kw4PeAldkOuGCWfCnDzZwPHUx5qv9+WztY5+TEbsgXc5E+/e2NDA6Gg3eT8zUGeexeGdab3f+DuN9ZClZJYVGA==", + "dev": true, + "dependencies": { + "@module-federation/dts-plugin": "0.2.8", + "@module-federation/managers": "0.2.8", + "@module-federation/sdk": "0.2.8", + "chalk": "3.0.0", + "find-pkg": "2.0.0" + } + }, + "node_modules/@module-federation/manifest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@module-federation/manifest/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@module-federation/manifest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@module-federation/manifest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@module-federation/rspack": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.2.8.tgz", + "integrity": "sha512-5Bofm3cY7OOwO2DT5TevITd+HAA03zsY1wwsMb1BP6NkS/ukUtsjuRo2Anua0RkHBEIx+Dv5rpqOn7qSlOm1Fg==", + "dev": true, + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "0.2.8", + "@module-federation/dts-plugin": "0.2.8", + "@module-federation/managers": "0.2.8", + "@module-federation/manifest": "0.2.8", + "@module-federation/runtime-tools": "0.2.8", + "@module-federation/sdk": "0.2.8" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/@module-federation/runtime": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.2.8.tgz", + "integrity": "sha512-8xmA/+z1zD09F5qU8VnSWLExqTCVWoHOguXsCX79kkqp7i0c+D2YaebWzlQ2kku+DU+0VIzXpQ3BBcumZ3v3wQ==", + "dev": true, + "dependencies": { + "@module-federation/sdk": "0.2.8" + } + }, + "node_modules/@module-federation/runtime-tools": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.2.8.tgz", + "integrity": "sha512-RSNtyhcNvnTQIdzRUIOGue6WQA/9mL9cY/n0dEd357L/lmLCvfHiZbowlkacckDzyApariUHxzkHrU2Q6kzoew==", + "dev": true, + "dependencies": { + "@module-federation/runtime": "0.2.8", + "@module-federation/webpack-bundler-runtime": "0.2.8" + } + }, + "node_modules/@module-federation/sdk": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.2.8.tgz", + "integrity": "sha512-eGMnJxdRDgt6dtMv8gkAlzEbTPWVHb3AHUNUG0w56wcbIF0RHC6kmvpHpSQyq4DVGWv3U4g/ZiH5BvBlqEelDQ==", + "dev": true + }, + "node_modules/@module-federation/third-party-dts-extractor": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.2.8.tgz", + "integrity": "sha512-VGXvdsRlljbFUfGeA448CxR7i6fLWJN07ViRuNXYYXc19e4bQVhBHzrf7eCv9ahcf/tA/8YYCS2h11ixbD691A==", + "dev": true, + "dependencies": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" + } + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.2.8.tgz", + "integrity": "sha512-tiW1kD/V3QNul1/O3Y3lwQv/r4sUU4jvWZykrLvHYt2vuoGe1d4tHnSIFEVEAi9FSpuDwdRK2+NaWBr92gIS7Q==", + "dev": true, + "dependencies": { + "@module-federation/runtime": "0.2.8", + "@module-federation/sdk": "0.2.8" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", + "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", + "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", + "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", + "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", + "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", + "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "dev": true, + "dependencies": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@nestjs/bull": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-10.0.1.tgz", + "integrity": "sha512-1GcJ8BkHDgQdBMZ7SqAqgUHiFnISXmpGvewFeTc8wf87JLk2PweiKv9j9/KQKU+NI237pCe82XB0bXzTnsdxSw==", + "dependencies": { + "@nestjs/bull-shared": "^10.0.1", + "tslib": "2.6.0" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", + "bull": "^3.3 || ^4.0.0" + } + }, + "node_modules/@nestjs/bull-shared": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-10.1.1.tgz", + "integrity": "sha512-su7eThDrSz1oQagEi8l+1CyZ7N6nMgmyAX0DuZoXqT1KEVEDqGX7x80RlPVF60m/8SYOskckGMjJROSfNQcErw==", + "dependencies": { + "tslib": "2.6.2" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/@nestjs/bull-shared/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@nestjs/cache-manager": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-2.1.0.tgz", + "integrity": "sha512-9kep3a8Mq5cMuXN/anGhSYc0P48CRBXk5wyJJRBFxhNkCH8AIzZF4CASGVDIEMmm3OjVcEUHojjyJwCODS17Qw==", + "peerDependencies": { + "@nestjs/common": "^9.0.0 || ^10.0.0", + "@nestjs/core": "^9.0.0 || ^10.0.0", + "cache-manager": "<=5", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.0.0" + } + }, + "node_modules/@nestjs/common": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.1.3.tgz", + "integrity": "sha512-xSyXBwgcmiFwQqek1Urw/AL3pRPq9bp/tpgfTxmnJg3gP6XNUbx1fDr0de50irXgZYzFKfVFo9ptC3b2du5YKA==", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.6.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/common/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/@nestjs/config": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.0.0.tgz", + "integrity": "sha512-fzASk1Uv6AjdE6uA1na8zpqRCXAhRpcfgpCVv3SAKlgJ3VR3bEjcI4G17WHLgLBsmPzI1ofdkSI451WLD1F1Rw==", + "dependencies": { + "dotenv": "16.1.4", + "dotenv-expand": "10.0.0", + "lodash": "4.17.21", + "uuid": "9.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "reflect-metadata": "^0.1.13" + } + }, + "node_modules/@nestjs/config/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@nestjs/core": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.1.3.tgz", + "integrity": "sha512-VzK54TuacC3Vmq3b5xTyMVTlDNJeKbjpKfV9fNqm4TbIBm8ZPo3FC0osJAbAK4XwbVvv2Flq1yA3CutasupVjw==", + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "3.2.0", + "tslib": "2.6.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/microservices": "^10.0.0", + "@nestjs/platform-express": "^10.0.0", + "@nestjs/websockets": "^10.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/core/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/@nestjs/event-emitter": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.0.4.tgz", + "integrity": "sha512-quMiw8yOwoSul0pp3mOonGz8EyXWHSBTqBy8B0TbYYgpnG1Ix2wGUnuTksLWaaBiiOTDhciaZ41Y5fJZsSJE1Q==", + "dependencies": { + "eventemitter2": "6.4.9" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/@nestjs/jwt": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.1.0.tgz", + "integrity": "sha512-iLwCGS25ybUxGS7i5j/Mwuyzvp/WxJftHlm8aLEBv5GV92apz6L1QVjxLdZrqXbzo++C8gdJauhzil8qitY+6w==", + "dependencies": { + "@types/jsonwebtoken": "9.0.2", + "jsonwebtoken": "9.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/@nestjs/passport": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-10.0.3.tgz", + "integrity": "sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==", + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "passport": "^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0" + } + }, + "node_modules/@nestjs/platform-express": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.1.3.tgz", + "integrity": "sha512-RSf7ooCrxiWJlWl3CLfpaYmAf3U0tRsN7pJakujWdvzVJU2EzVZTLcy1MtnSg/HBm9/Rvg98VI5QI6oOhOpt+A==", + "dependencies": { + "body-parser": "1.20.2", + "cors": "2.8.5", + "express": "4.18.2", + "multer": "1.4.4-lts.1", + "tslib": "2.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/core": "^10.0.0" + } + }, + "node_modules/@nestjs/platform-express/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/@nestjs/schedule": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-3.0.2.tgz", + "integrity": "sha512-INhpzkyquosLbVrXx4v+rfAnomwBTgKQvs7e9BZ2LSZdWQOqCQD2PmvWDiu8c4wdJIH6wcWQh98w5KxIcKuVBA==", + "dependencies": { + "cron": "2.4.0", + "uuid": "9.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", + "reflect-metadata": "^0.1.12" + } + }, + "node_modules/@nestjs/schedule/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@nestjs/schematics": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.1.tgz", + "integrity": "sha512-buxpYtSwOmWyf0nUJWJCkCkYITwbOfIEKHTnGS7sDbcfaajrOFXb5pPAGD2E1CUb3C1+NkQIURPKzs0IouZTQg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.1.0", + "@angular-devkit/schematics": "16.1.0", + "comment-json": "4.2.3", + "jsonc-parser": "3.2.0", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.0.tgz", + "integrity": "sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.0.tgz", + "integrity": "sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.1.0", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nestjs/schematics/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/@nestjs/schematics/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nestjs/schematics/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==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nestjs/serve-static": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-4.0.0.tgz", + "integrity": "sha512-8cTrNV2ngdHIjiLNsXePnw0+KY1ThrZGz/WeyAG5gIvmZNDbnZBOrPoYlKL+MOzlXlQStxR5jKLYmn+nJeoncQ==", + "dependencies": { + "path-to-regexp": "0.2.5" + }, + "peerDependencies": { + "@fastify/static": "^6.5.0", + "@nestjs/common": "^9.0.0 || ^10.0.0", + "@nestjs/core": "^9.0.0 || ^10.0.0", + "express": "^4.18.1", + "fastify": "^4.7.0" + }, + "peerDependenciesMeta": { + "@fastify/static": { + "optional": true + }, + "express": { + "optional": true + }, + "fastify": { + "optional": true + } + } + }, + "node_modules/@nestjs/serve-static/node_modules/path-to-regexp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.2.5.tgz", + "integrity": "sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q==" + }, + "node_modules/@nestjs/testing": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.1.3.tgz", + "integrity": "sha512-zMrO9xLPYnKtC6q1diWubuMshIp0v2aGHa58jcIfZaAlJlU/6RKsgCOiFQ42aFzxUEBRWF0LBF0aiwt04LKMyQ==", + "dev": true, + "dependencies": { + "tslib": "2.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/core": "^10.0.0", + "@nestjs/microservices": "^10.0.0", + "@nestjs/platform-express": "^10.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@nestjs/testing/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "node_modules/@ngtools/webpack": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.1.1.tgz", + "integrity": "sha512-mjlfnWcHtBZJUJaVyffJZZL8U1o1XUQwrFIKeiFUeatLDsjtv8EbLW9Ed1v3eAJyVuaTNKpsdZma1XdxzeLONw==", + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^18.0.0", + "typescript": ">=5.4 <5.6", + "webpack": "^5.54.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz", + "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", + "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "dev": true, + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dev": true, + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", + "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", + "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@nrwl/angular": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/angular/-/angular-19.5.6.tgz", + "integrity": "sha512-ilS6ZjsEOToeTiKHixd9+wLvslUZ1cdvNIgvsUZ3VHK4OmGxTzGJXaV+1+CSgYDpSp4+MC/Di8EfzUteCn9mFw==", + "dev": true, + "dependencies": { + "@nx/angular": "19.5.6", + "tslib": "^2.3.0" + } + }, + "node_modules/@nrwl/cypress": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/cypress/-/cypress-19.5.6.tgz", + "integrity": "sha512-yVMSVjDcOdqiiJjHaHme/3FtyFgT4mK7+GZExoJzGevHDrReeN22a2+3W7Rr/cEi/qTDdnNfODn5QdSpWfbuLQ==", + "dev": true, + "dependencies": { + "@nx/cypress": "19.5.6" + } + }, + "node_modules/@nrwl/devkit": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.5.6.tgz", + "integrity": "sha512-H7LGlwAktfL2GR4scwCfehuppmzcHJJt4C2PpiGEsfA74MKBw2/VGX15b29Mf36XbGS+Bx9vjvooZEt5HPCusw==", + "dev": true, + "dependencies": { + "@nx/devkit": "19.5.6" + } + }, + "node_modules/@nrwl/eslint-plugin-nx": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.5.6.tgz", + "integrity": "sha512-pHIJHXOVJRC+wBI9zK0RnwKAh7NC9TKCdIm5KsYNFHTLswUxHnxzmP86hKTVcZO7o10NeYzBWD7QAQvqYgIQoA==", + "dev": true, + "dependencies": { + "@nx/eslint-plugin": "19.5.6" + } + }, + "node_modules/@nrwl/jest": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.5.6.tgz", + "integrity": "sha512-/redyU+er4f0xjLgWttdyOZw0yOozGzwDuUWYu0vR9SCmKXyhQf3kUHw6yR3/qOLiN32VbzAmiq67NvGhoRgFw==", + "dev": true, + "dependencies": { + "@nx/jest": "19.5.6" + } + }, + "node_modules/@nrwl/js": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.5.6.tgz", + "integrity": "sha512-mfTBvon1v/Ts1Crvv25raXGxpQe3cgPTNCP+D5SG6Vpe/vbLOYiBi90UhHIKXKZOQ73RRx+Wojgn+Zv5pDo13A==", + "dev": true, + "dependencies": { + "@nx/js": "19.5.6" + } + }, + "node_modules/@nrwl/nest": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/nest/-/nest-19.5.6.tgz", + "integrity": "sha512-TPI2eD0JotnAvd3ynnrNiToVRTabjjqabU+JDnH2qrI2GnDwotbazJLxDQTlI62ev2sqs9lw3iMbn1jwJDy5UQ==", + "dev": true, + "dependencies": { + "@nx/nest": "19.5.6" + } + }, + "node_modules/@nrwl/node": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/node/-/node-19.5.6.tgz", + "integrity": "sha512-eiQqeHNtR40cdD0WX33ZUwom3Malt7C7zq+iU5DTLlbeC6ciZGz9pYkeNZ6JJZOEPEUGM5O+7gtWUb+Ig7ZyMQ==", + "dev": true, + "dependencies": { + "@nx/node": "19.5.6" + } + }, + "node_modules/@nrwl/storybook": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/storybook/-/storybook-19.5.6.tgz", + "integrity": "sha512-xEAnwp16NKBXZ8nqXFiFjJFFc8SzWY+oRoXQTkR7mUV7kKnaeFK2mBq2JXygyRonRdrBjZIvsM7YzRRl3brlJQ==", + "dev": true, + "dependencies": { + "@nx/storybook": "19.5.6" + } + }, + "node_modules/@nrwl/tao": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.5.6.tgz", + "integrity": "sha512-p1bxEjW32bIHAiTp+PVdJpa2V9En2s9FigepHXyvmT2Aipisz96CKiDjexhPTjOZHUKtqA9FgmOIuVl3sBME3g==", + "dev": true, + "dependencies": { + "nx": "19.5.6", + "tslib": "^2.3.0" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@nrwl/web": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.5.6.tgz", + "integrity": "sha512-2TJB0zSBjDtl2AaZToTvSLej4ed5YO5nJ9iFsv764WDLI0D/WsciUiZHNdXSIhU0lf2yrs7CmIYZFWAdnXzxKA==", + "dev": true, + "dependencies": { + "@nx/web": "19.5.6" + } + }, + "node_modules/@nrwl/webpack": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/webpack/-/webpack-19.5.6.tgz", + "integrity": "sha512-2tHi4QKDAjs9f7lzoELmzh5D1aT+XOn6PTK47V4n+Y878HgRQuv9NMRd7WhH5nAAlOKQYonsTc9e4doEJ6T9aQ==", + "dev": true, + "dependencies": { + "@nx/webpack": "19.5.6" + } + }, + "node_modules/@nrwl/workspace": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.5.6.tgz", + "integrity": "sha512-k0Pria840szB3dIDCXOMbD4jbnaLCeGRYthE5duG5nPxTCbeMMu7pU1t0sv9IgpQZ/JrHeWliknWgaTlIguPug==", + "dev": true, + "dependencies": { + "@nx/workspace": "19.5.6" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/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/@nuxtjs/opencollective/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/@nuxtjs/opencollective/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/@nuxtjs/opencollective/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/@nx/angular": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-19.5.6.tgz", + "integrity": "sha512-86fZmTx7Omo7FJuRyuNvEiUHUSuwEaGFeh/UkWt3Crf5C0pAlPYzpcm3B7B7e0RwGiWII9Mc9ZLwnPTv4jgZdA==", + "dev": true, + "dependencies": { + "@module-federation/enhanced": "~0.2.3", + "@nrwl/angular": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/js": "19.5.6", + "@nx/web": "19.5.6", + "@nx/webpack": "19.5.6", + "@nx/workspace": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "@typescript-eslint/type-utils": "^7.16.0", + "chalk": "^4.1.0", + "find-cache-dir": "^3.3.2", + "magic-string": "~0.30.2", + "minimatch": "9.0.3", + "piscina": "^4.4.0", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "webpack": "^5.88.0", + "webpack-merge": "^5.8.0" + }, + "peerDependencies": { + "@angular-devkit/build-angular": ">= 16.0.0 < 19.0.0", + "@angular-devkit/core": ">= 16.0.0 < 19.0.0", + "@angular-devkit/schematics": ">= 16.0.0 < 19.0.0", + "@schematics/angular": ">= 16.0.0 < 19.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@nx/angular/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/angular/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/angular/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/angular/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/cypress": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-19.5.6.tgz", + "integrity": "sha512-3yUZ0AR5e9Ea7vk/6Zjje1QHyPXGycdnWOzOZuOJ6Wloeqj/EWWGoIEsSt+XAfzCiK/oWnlXpsbkrGJZYYgbdQ==", + "dev": true, + "dependencies": { + "@nrwl/cypress": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/js": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "detect-port": "^1.5.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "cypress": ">= 3 < 14" + }, + "peerDependenciesMeta": { + "cypress": { + "optional": true + } + } + }, + "node_modules/@nx/devkit": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.5.6.tgz", + "integrity": "sha512-zSToXLkhbAOQmqVTgUNHdLO0uOZz/iGwqEK4tuAhU5hhqTcpN1TZUI9BlINvtFJBLvbNroGrnIh0gTq9CPzVHw==", + "dev": true, + "dependencies": { + "@nrwl/devkit": "19.5.6", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "minimatch": "9.0.3", + "semver": "^7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "peerDependencies": { + "nx": ">= 17 <= 20" + } + }, + "node_modules/@nx/eslint": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.5.6.tgz", + "integrity": "sha512-WLUo4f+ndMVWZ5QqqZiZNCmbLCqEqPBopvGWJg6uUJyrm5HiFsks+1nRp7BxFzj0SwmdmSRzQFvMgorw7lAgCQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "@nx/linter": "19.5.6", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "typescript": "~5.4.2" + }, + "peerDependencies": { + "@zkochan/js-yaml": "0.0.7", + "eslint": "^8.0.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "@zkochan/js-yaml": { + "optional": true + } + } + }, + "node_modules/@nx/eslint-plugin": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.5.6.tgz", + "integrity": "sha512-5yZJbAoS35blBvY1riAxzemBGJJJW36FVm304ccPyJXvXA7Wa7yMbtwuVagJ9E7w4fodmCcWOAvrCDUTSakBug==", + "dev": true, + "dependencies": { + "@nrwl/eslint-plugin-nx": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "@typescript-eslint/type-utils": "^7.16.0", + "@typescript-eslint/utils": "^7.16.0", + "chalk": "^4.1.0", + "confusing-browser-globals": "^1.0.9", + "jsonc-eslint-parser": "^2.1.0", + "semver": "^7.5.3", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.13.2 || ^7.0.0", + "eslint-config-prettier": "^9.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/eslint/node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@nx/jest": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.5.6.tgz", + "integrity": "sha512-UkGEl7iAt3MEz+BB4Xp3u641LrMeOytTcbljjyYtR84YtJaYgc8CFmornnw8KVqfavQS+v/nrv8lMbbYQHkWpQ==", + "dev": true, + "dependencies": { + "@jest/reporters": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@nrwl/jest": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "chalk": "^4.1.0", + "identity-obj-proxy": "3.0.0", + "jest-config": "^29.4.1", + "jest-resolve": "^29.4.1", + "jest-util": "^29.4.1", + "minimatch": "9.0.3", + "resolve.exports": "1.1.0", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } + }, + "node_modules/@nx/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.5.6.tgz", + "integrity": "sha512-NNf6Zh4Z8k3dmkXkCUYrReH9ZpdAhvUQjwrWUHtmc5MnWTsQL12a01MwbMi4ReMzDLDjffDXjJFxYmbNYKaRzw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/workspace": "19.5.6", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "9.0.3", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "^7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, + "node_modules/@nx/js/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/js/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/js/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@nx/js/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js/node_modules/npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@nx/js/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/js/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@nx/js/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/@nx/js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/js/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/js/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js/node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/@nx/linter": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.5.6.tgz", + "integrity": "sha512-OS0DZ1TDTvWaZe7ijLT6jkQZCCBg4OseFmP2Y6bqE/oRdyoRv95gCT2MGmyJQXkLoX5j9DMfc4nYXS0VHFYqdg==", + "dev": true, + "dependencies": { + "@nx/eslint": "19.5.6" + } + }, + "node_modules/@nx/nest": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-19.5.6.tgz", + "integrity": "sha512-cIr27QlF3RBb0NhCxJGipQt2uwgERLMJ0nqJhlkbBFlmZsZiFEQ33V89hgGAdPTB3ntEKmubKws0ZySn2hdrCQ==", + "dev": true, + "dependencies": { + "@nestjs/schematics": "^9.1.0", + "@nrwl/nest": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/js": "19.5.6", + "@nx/node": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/nest/node_modules/@angular-devkit/core": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.0.1.tgz", + "integrity": "sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nx/nest/node_modules/@angular-devkit/schematics": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.0.1.tgz", + "integrity": "sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.0.1", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nx/nest/node_modules/@nestjs/schematics": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.2.0.tgz", + "integrity": "sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.0.1", + "@angular-devkit/schematics": "16.0.1", + "jsonc-parser": "3.2.0", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.3.5" + } + }, + "node_modules/@nx/nest/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nx/nest/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@nx/nest/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/@nx/nest/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nx/nest/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==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nx/node": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/node/-/node-19.5.6.tgz", + "integrity": "sha512-nWWoZCdomYOo0JmJMiP1UWlAnCdrvqLxXgWS6MNbQTT0rhJSn6em5S9N4TuHA7+aCDInvzNEL8YcVTm1xCbtug==", + "dev": true, + "dependencies": { + "@nrwl/node": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/jest": "19.5.6", + "@nx/js": "19.5.6", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.5.6.tgz", + "integrity": "sha512-evEpUq571PQkhaLBR7ul5iqE2l97QS7Q37/rxoBuwJzyQ/QKHfNu5t032bR3KLyEOrv7golT10jMeoQlNeF7eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.5.6.tgz", + "integrity": "sha512-o1tu0dOW7TZ80VN9N11FQL/3gHd1+t6NqtEmRClN0/sAh2MZyiBdbXv7UeN5HoKE7HAusiVFIxK3c1lxOvFtsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.5.6.tgz", + "integrity": "sha512-IUL0ROGpLUol9cuVJ7VeUvaB/ptxg7DOjMef1+LJeOgxl/SFNa0bj0kKpA/AQwujz6cLI7Ei7xLTVQOboNh1DA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.5.6.tgz", + "integrity": "sha512-TGf1+cpWg5QiPEGW5kgxa1fVNyASMuqu+LvQ9CKhNYNz5EPD15yr/k6C0tOjgSXro3wi8TikTeG0Ln2hpmn6pw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.5.6.tgz", + "integrity": "sha512-4hZI5NmnBEAzr3NV/BtlPjbSVffLWGGCJ5tB/JB/NpW/vMtzOPCZ4RvsHuJMPprqHcXOdUnBgZFEcLbEMUXz0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.5.6.tgz", + "integrity": "sha512-n0oIBblMN+nlcBUbrFUkRSyzKZVR+G1lzdZ3PuHVwLC664hkbijEBAdF2E321yRfv5ohQVY0UIYDZVFN2XhFUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.5.6.tgz", + "integrity": "sha512-IuoNo1bDHyJEeHom/n2m4+AA+UQ+Rlryvt9+bTdADclSFjmBLYCgbJwQRy7q9+vQk2mpQm0pQJv4d3XKCpDH+g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.5.6.tgz", + "integrity": "sha512-FXtB8m/CSRkXLtDOAGfImO9OCUDIwYBssnvCVqX6PyPTBaVWo/GvX1O9WRbXSqSVIaJJTPn1aY/p6vptlGbDFw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.5.6.tgz", + "integrity": "sha512-aIDU84rjvxoqyUDIdN4VwS91Yec8bAtXOxjOFlF2acY2tXh0RjzmM+mkEP44nVAzFy0V1/cjzBKb6643FsEqdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.5.6.tgz", + "integrity": "sha512-zWB/2TjhNYKHbuPh++5hYitno3EpSFXrPND0I0VLec27WW7voRY9XQFFznA3omForU4FfmVhITcKCqzIb3EtpA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/storybook": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-19.5.6.tgz", + "integrity": "sha512-9lfGxk/Wl6yVXWJZrOgcgYP1QmdxH6GG+VmOB+ofvQWapfH962jadmNlgxDzQW9uYoNI50WHibVq1eCfll68Uw==", + "dev": true, + "dependencies": { + "@nrwl/storybook": "19.5.6", + "@nx/cypress": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/js": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "semver": "^7.5.3", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/web": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.5.6.tgz", + "integrity": "sha512-mCw2KpVj8FPieRFn98bMJxF4s1RCMTciC78NKFiC0Dmg0KFmhFUw6geWe8anhhjbTxqFvLENMJQIn9K4dlaL1A==", + "dev": true, + "dependencies": { + "@nrwl/web": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "chalk": "^4.1.0", + "detect-port": "^1.5.1", + "http-server": "^14.1.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/web/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/web/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/web/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/web/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/webpack": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-19.5.6.tgz", + "integrity": "sha512-7xMYx0MIxf4kuhiIyF7QEee7AgK1wzroO2wl+9fU8sjKhvDgW9k8huMCNkOcScptB3SP4CiM9b7S5c/pwr75hQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@module-federation/enhanced": "^0.2.3", + "@module-federation/sdk": "^0.2.3", + "@nrwl/webpack": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "ajv": "^8.12.0", + "autoprefixer": "^10.4.9", + "babel-loader": "^9.1.2", + "browserslist": "^4.21.4", + "chalk": "^4.1.0", + "copy-webpack-plugin": "^10.2.4", + "css-loader": "^6.4.0", + "css-minimizer-webpack-plugin": "^5.0.0", + "express": "^4.19.2", + "fork-ts-checker-webpack-plugin": "7.2.13", + "http-proxy-middleware": "^3.0.0", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "^4.0.2", + "loader-utils": "^2.0.3", + "mini-css-extract-plugin": "~2.4.7", + "parse5": "4.0.0", + "postcss": "^8.4.38", + "postcss-import": "~14.1.0", + "postcss-loader": "^6.1.1", + "rxjs": "^7.8.0", + "sass": "^1.42.1", + "sass-loader": "^12.2.0", + "source-map-loader": "^5.0.0", + "style-loader": "^3.3.0", + "stylus": "^0.59.0", + "stylus-loader": "^7.1.0", + "terser-webpack-plugin": "^5.3.3", + "ts-loader": "^9.3.1", + "tsconfig-paths-webpack-plugin": "4.0.0", + "tslib": "^2.3.0", + "webpack": "^5.80.0", + "webpack-dev-server": "^4.9.3", + "webpack-node-externals": "^3.0.0", + "webpack-subresource-integrity": "^5.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@nx/webpack/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/webpack/node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/@nx/webpack/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/webpack/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@nx/webpack/node_modules/copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.20.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/webpack/node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/@nx/webpack/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@nx/webpack/node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/webpack/node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@nx/webpack/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@nx/webpack/node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "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/@nx/webpack/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/webpack/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/webpack/node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/@nx/webpack/node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/@nx/webpack/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/@nx/webpack/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nx/webpack/node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@nx/webpack/node_modules/mini-css-extract-plugin": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", + "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/@nx/webpack/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/@nx/webpack/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/webpack/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "node_modules/@nx/webpack/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/@nx/webpack/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nx/webpack/node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/@nx/webpack/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@nx/webpack/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==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/@nx/webpack/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/webpack/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/webpack/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@nx/webpack/node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@nx/webpack/node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/@nx/workspace": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.5.6.tgz", + "integrity": "sha512-VkyHzSPI+++kLgftE6HA/jXcbn3zZwDYjhsrmSqwutj8BTuKhxs1YIL2gkzYVoTytF1wpWl3nk5MzqMGclptjA==", + "dev": true, + "dependencies": { + "@nrwl/workspace": "19.5.6", + "@nx/devkit": "19.5.6", + "chalk": "^4.1.0", + "enquirer": "~2.3.6", + "nx": "19.5.6", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } + }, + "node_modules/@nx/workspace/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/workspace/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/workspace/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/workspace/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@peculiar/asn1-android": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz", + "integrity": "sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-android/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz", + "integrity": "sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-ecc/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz", + "integrity": "sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-rsa/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", + "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-schema/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz", + "integrity": "sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "ipaddr.js": "^2.1.0", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/@peculiar/asn1-x509/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@peculiar/webcrypto": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", + "peer": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@peculiar/webcrypto/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "peer": true + }, + "node_modules/@phenomnomnominal/tsquery": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", + "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", + "dev": true, + "dependencies": { + "esquery": "^1.4.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "node_modules/@prisma/client": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.18.0.tgz", + "integrity": "sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw==", + "hasInstallScript": true, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.18.0.tgz", + "integrity": "sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==" + }, + "node_modules/@prisma/engines": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.18.0.tgz", + "integrity": "sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==", + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "5.18.0", + "@prisma/engines-version": "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169", + "@prisma/fetch-engine": "5.18.0", + "@prisma/get-platform": "5.18.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169.tgz", + "integrity": "sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==" + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.18.0.tgz", + "integrity": "sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==", + "dependencies": { + "@prisma/debug": "5.18.0", + "@prisma/engines-version": "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169", + "@prisma/get-platform": "5.18.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.18.0.tgz", + "integrity": "sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==", + "dependencies": { + "@prisma/debug": "5.18.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz", + "integrity": "sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz", + "integrity": "sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz", + "integrity": "sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz", + "integrity": "sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz", + "integrity": "sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz", + "integrity": "sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz", + "integrity": "sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz", + "integrity": "sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz", + "integrity": "sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz", + "integrity": "sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz", + "integrity": "sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz", + "integrity": "sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz", + "integrity": "sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz", + "integrity": "sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz", + "integrity": "sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz", + "integrity": "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "dependencies": { + "any-observable": "^0.3.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "rxjs": { + "optional": true + }, + "zen-observable": { + "optional": true + } + } + }, + "node_modules/@schematics/angular": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.1.1.tgz", + "integrity": "sha512-6nQUSuFSP7un5Bmm6/MpQXq3jnkdEYg2MUPv7JStsqnT1YYzUsDjkUv7Hsci0xQmeUAzVz3ueg4znviJoQxWdg==", + "dependencies": { + "@angular-devkit/core": "18.1.1", + "@angular-devkit/schematics": "18.1.1", + "jsonc-parser": "3.3.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", + "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", + "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz", + "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.1.tgz", + "integrity": "sha512-YZ71wKIOweC8ViUeZXboz0iPLqMkskxuoeN/D1CEpAyZvEepbX9oRMIoO6a/DxUqO1VEaqmcmmqzSiqtOsvSmw==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.3.tgz", + "integrity": "sha512-agQhHNkIddXFslkudjV88vTXiAMEyUtso3at6ZHUNJ1agZb7Ze6VW/PddHipdWBu1t+8OWLW5X5yZOPiOnaWJQ==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz", + "integrity": "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@simplewebauthn/browser": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-9.0.1.tgz", + "integrity": "sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw==", + "dependencies": { + "@simplewebauthn/types": "^9.0.1" + } + }, + "node_modules/@simplewebauthn/server": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.3.tgz", + "integrity": "sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA==", + "dependencies": { + "@hexagon/base64": "^1.1.27", + "@levischuck/tiny-cbor": "^0.2.2", + "@peculiar/asn1-android": "^2.3.10", + "@peculiar/asn1-ecc": "^2.3.8", + "@peculiar/asn1-rsa": "^2.3.8", + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "@simplewebauthn/types": "^9.0.1", + "cross-fetch": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@simplewebauthn/types": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz", + "integrity": "sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==" + }, + "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==", + "devOptional": true + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "devOptional": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "devOptional": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@stencil/core": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.18.0.tgz", + "integrity": "sha512-cN+nvjy0L8KyYq7N1bmswN/AcBustFlsAxfyPQ+fd3m98lPo53jNKIxKve1ZQ4ZmzSzYO7alDhZvjIesM0rl7w==", + "bin": { + "stencil": "bin/stencil" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.10.0" + } + }, + "node_modules/@storybook/addon-actions": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.2.6.tgz", + "integrity": "sha512-iCsf3V28/jJ95w2zd8aSvR4denoA2UYV3fpNCTGOURqICyKOG3cyVxvqKp8Hhcwn7trNOsK+HlL6q5gpv56ViA==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "@types/uuid": "^9.0.1", + "dequal": "^2.0.2", + "polished": "^4.2.2", + "uuid": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-backgrounds": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.2.6.tgz", + "integrity": "sha512-61NFowA6EmCw+Eyzp0U4fat9MlPDdnT7aoDyzqSImLwWLITY9IvmWuTeo7XKJZN3fe22z1r7cZseKdYrtaHcKw==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-controls": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.2.6.tgz", + "integrity": "sha512-EHUwHy+oZZv3pXzN7fuXWrS/meHFjqcELY3RBvOyEkGf21agl6co6R1tnf6d5N5QoYAGfIbDO7dkauSL2RfNAw==", + "dev": true, + "dependencies": { + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-docs": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.2.6.tgz", + "integrity": "sha512-qe7hxntaezqjKdU9QS+Q9NFL6i/uNdBxdvOnCKgPhBAY/zY6yhk5t3sOvonynPK5nkaNAowfSNPIzNxAXlJ1sA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.4", + "@mdx-js/react": "^3.0.0", + "@storybook/blocks": "8.2.6", + "@storybook/csf-plugin": "8.2.6", + "@storybook/global": "^5.0.0", + "@storybook/react-dom-shim": "8.2.6", + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "fs-extra": "^11.1.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "rehype-external-links": "^3.0.0", + "rehype-slug": "^6.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-docs/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/addon-essentials": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.2.6.tgz", + "integrity": "sha512-diGjGZcZNov+RCAVQBTm8JKP2kUtMRuJIQFBeXdPWpu6hYBk6lw1FlAf2GywWGCvdny1pJT90hfoD33qUMNuDg==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "8.2.6", + "@storybook/addon-backgrounds": "8.2.6", + "@storybook/addon-controls": "8.2.6", + "@storybook/addon-docs": "8.2.6", + "@storybook/addon-highlight": "8.2.6", + "@storybook/addon-measure": "8.2.6", + "@storybook/addon-outline": "8.2.6", + "@storybook/addon-toolbars": "8.2.6", + "@storybook/addon-viewport": "8.2.6", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-highlight": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.2.6.tgz", + "integrity": "sha512-03cV9USsfP3bS4wYV06DYcIaGPfoheQe53Q0Jr1B2yJUVyIPKvmO2nGjLBsqzeL3Wl7vSfLQn0/dUdxCcbqLsw==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-measure": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.2.6.tgz", + "integrity": "sha512-neI8YeSOAtOmzasLxo6O8ZLr2ebMaD7XVF+kYatl5+SpyuwwvUGcP9NkKe5S+mB8V2zxFUIsXS74XrhmQhRoaQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-outline": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.2.6.tgz", + "integrity": "sha512-uAlPtqDWlq7MQQ4zJT80qdjbSdLF/zsvtPhidX6h9cjLKNPWAv79xJQ14AJHaMv+Hzy5xKnM4wdEhgPbzKabQg==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-toolbars": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.2.6.tgz", + "integrity": "sha512-0JmRirMpxHS6VZzBk0kY871xWTpkk3TN4S1sxoFf5fcnCfVTHDjEJ5Ws/QWru1RJlIZHuJKRdQIA6Vuq5X+KfQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/addon-viewport": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.2.6.tgz", + "integrity": "sha512-IAxH9H8tVFzSmZhKf5E+EALiAdkp19RzGqP/rWluD8LH7oW5HumQE/4oN0ZhVMy1RxYsCKFYjWyAp7AuxeMRSw==", + "dev": true, + "dependencies": { + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/angular": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-8.2.6.tgz", + "integrity": "sha512-kzOA4H09oDMq2KAg3iVDo0cWFx4u8qYbrMaMCbd/UjuSYd1Qx965Dx0m0i5i6t7BObUe5R5RlDhBo/JXAyQ55g==", + "dev": true, + "dependencies": { + "@storybook/builder-webpack5": "8.2.6", + "@storybook/components": "^8.2.6", + "@storybook/core-webpack": "8.2.6", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "^8.2.6", + "@storybook/preview-api": "^8.2.6", + "@storybook/theming": "^8.2.6", + "@types/node": "^18.0.0", + "@types/react": "^18.0.37", + "@types/react-dom": "^18.0.11", + "@types/semver": "^7.3.4", + "@types/webpack-env": "^1.18.0", + "fd-package-json": "^1.2.0", + "find-up": "^5.0.0", + "semver": "^7.3.7", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0", + "tsconfig-paths-webpack-plugin": "^4.0.1", + "util-deprecate": "^1.0.2", + "webpack": "5" + }, + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@angular-devkit/architect": ">=0.1500.0 < 0.1900.0", + "@angular-devkit/build-angular": ">=15.0.0 < 19.0.0", + "@angular-devkit/core": ">=15.0.0 < 19.0.0", + "@angular/cli": ">=15.0.0 < 19.0.0", + "@angular/common": ">=15.0.0 < 19.0.0", + "@angular/compiler": ">=15.0.0 < 19.0.0", + "@angular/compiler-cli": ">=15.0.0 < 19.0.0", + "@angular/core": ">=15.0.0 < 19.0.0", + "@angular/forms": ">=15.0.0 < 19.0.0", + "@angular/platform-browser": ">=15.0.0 < 19.0.0", + "@angular/platform-browser-dynamic": ">=15.0.0 < 19.0.0", + "rxjs": "^6.0.0 || ^7.4.0", + "storybook": "^8.2.6", + "typescript": "^4.0.0 || ^5.0.0", + "zone.js": ">= 0.11.1 < 1.0.0" + }, + "peerDependenciesMeta": { + "@angular/cli": { + "optional": true + } + } + }, + "node_modules/@storybook/angular/node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/angular/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/angular/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/angular/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/angular/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/angular/node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@storybook/blocks": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.2.6.tgz", + "integrity": "sha512-nMlZJjVTyfOJ6xwORptsNuS1AZZlDbJUVXc2R8uukGd5GIXxxCdrPk4NvUsjfQslMT9LhYuFld3z62FATsM2rw==", + "dev": true, + "dependencies": { + "@storybook/csf": "0.1.11", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.2.5", + "@types/lodash": "^4.14.167", + "color-convert": "^2.0.1", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.4.5", + "memoizerific": "^1.11.3", + "polished": "^4.2.2", + "react-colorful": "^5.1.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.2.6" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-webpack5": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.2.6.tgz", + "integrity": "sha512-ba25XOXifbAxUYprw5WWcrYq/2DJODFoOHdv7YZqzjKeDDbg1Us8F+72zlBCdr38wY4V9084Sd8EBVXV5bxzRQ==", + "dev": true, + "dependencies": { + "@storybook/core-webpack": "8.2.6", + "@types/node": "^18.0.0", + "@types/semver": "^7.3.4", + "browser-assert": "^1.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "cjs-module-lexer": "^1.2.3", + "constants-browserify": "^1.0.0", + "css-loader": "^6.7.1", + "es-module-lexer": "^1.5.0", + "express": "^4.19.2", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "fs-extra": "^11.1.0", + "html-webpack-plugin": "^5.5.0", + "magic-string": "^0.30.5", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "semver": "^7.3.7", + "style-loader": "^3.3.1", + "terser-webpack-plugin": "^5.3.1", + "ts-dedent": "^2.0.0", + "url": "^0.11.0", + "util": "^0.12.4", + "util-deprecate": "^1.0.2", + "webpack": "5", + "webpack-dev-middleware": "^6.1.2", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/fork-ts-checker-webpack-plugin/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==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/fork-ts-checker-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==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@storybook/builder-webpack5/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/@storybook/builder-webpack5/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/@storybook/builder-webpack5/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", + "integrity": "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/@storybook/codemod": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.2.6.tgz", + "integrity": "sha512-+mFJ6R+JhJLpU7VPDlXU5Yn6nqIBq745GaEosnIiFOdNo3jaxJ58wq/sGhbQvoCHPUxMA+sDQvR7pS62YFoLRQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/preset-env": "^7.24.4", + "@babel/types": "^7.24.0", + "@storybook/core": "8.2.6", + "@storybook/csf": "0.1.11", + "@types/cross-spawn": "^6.0.2", + "cross-spawn": "^7.0.3", + "globby": "^14.0.1", + "jscodeshift": "^0.15.1", + "lodash": "^4.17.21", + "prettier": "^3.1.1", + "recast": "^0.23.5", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/codemod/node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/codemod/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/codemod/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/components": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.2.9.tgz", + "integrity": "sha512-OkkcZ/f/6o3GdFEEK9ZHKIGHWUHmavZUYs5xaSgU64bOrA2aqEFtfeWWitZYTv3Euhk8MVLWfyEMDfez0AlvDg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.9" + } + }, + "node_modules/@storybook/core": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.2.6.tgz", + "integrity": "sha512-XY71g3AcpD6IiER9k9Lt+vlUMYfPIYgWekd7e0Ggzz2gJkPuLunKEdQccLGDSHf5OFAobHhrTJc7ZsvWhmDMag==", + "dev": true, + "dependencies": { + "@storybook/csf": "0.1.11", + "@types/express": "^4.17.21", + "@types/node": "^18.0.0", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0", + "esbuild-register": "^3.5.0", + "express": "^4.19.2", + "process": "^0.11.10", + "recast": "^0.23.5", + "util": "^0.12.4", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.2.6.tgz", + "integrity": "sha512-L8wT5C9D33gk8Y6fV9Gak52V/pzm60+TXXFRW2+YYMyRwyjC1c/eDePlrRIu7jAJiEs9UmdxxUwM4R/iEhOHzg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/core-webpack": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.2.6.tgz", + "integrity": "sha512-RSqRVNrxrp2pKoQeSmaiHMz7GvAzQ7BV+qPi9gDRDDCuAPrjpY8a17KyqmCJ617asDAb+OEQNBks802xM3pEQw==", + "dev": true, + "dependencies": { + "@types/node": "^18.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/core-webpack/node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/core/node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/core/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@storybook/core/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@storybook/core/node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@storybook/core/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/@storybook/core/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/@storybook/csf": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", + "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==", + "dev": true, + "dependencies": { + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/csf-plugin": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.2.6.tgz", + "integrity": "sha512-USn7E/bMQYVqvFBuW6d9rKoSuCImjk0BAmc/0wIOuMQ/yQNp2Xze0m8eVkNHUIUDokyx0TXDjRjwq10Xxk16ag==", + "dev": true, + "dependencies": { + "unplugin": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true + }, + "node_modules/@storybook/icons": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.10.tgz", + "integrity": "sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og==", + "dev": true, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/manager-api": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.2.9.tgz", + "integrity": "sha512-mkYvUlfqDw+0WbxIynh5TcrotmoXlumEsOA4+45zuNea8XpEgj5cNBUCnmfEO6yQ85swqkS8YYbMpg1cZyu/Vw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.9" + } + }, + "node_modules/@storybook/preview-api": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.2.9.tgz", + "integrity": "sha512-D8/t+a78OJqQAcT/ABa1C4YM/OaLGQ9IvCsp3Q9ruUqDCwuZBj8bG3D4477dlY4owX2ycC0rWYu3VvuK0EmJjA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.9" + } + }, + "node_modules/@storybook/react-dom-shim": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.2.6.tgz", + "integrity": "sha512-B+x8UAEQPDp1yhN3tMh09NvSL38QNfJB7PAyLgKrfE7xIAzvewq+RLW2DfGkoZCy+Zr7QSHm1p7NOgud8+sQCg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^8.2.6" + } + }, + "node_modules/@storybook/theming": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.2.9.tgz", + "integrity": "sha512-OL0NFvowPX85N5zIYdgeKKaFm7V4Vgtci093vL3cDZT13LGH6GuEzJKkUFGuUGNPFlJc+EgTj0o6PYKrOLyQ6w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "storybook": "^8.2.9" + } + }, + "node_modules/@stripe/stripe-js": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-3.5.0.tgz", + "integrity": "sha512-pKS3wZnJoL1iTyGBXAvCwduNNeghJHY6QSRSNNvpYnrrQrLZ6Owsazjyynu0e0ObRgks0i7Rv+pe2M7/MBTZpQ==", + "engines": { + "node": ">=12.16" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "devOptional": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dev": true, + "dependencies": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "dev": true, + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "devOptional": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "devOptional": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "devOptional": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/big.js": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@types/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cache-manager": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-3.4.2.tgz", + "integrity": "sha512-1IwA74t5ID4KWo0Kndal16MhiPSZgMe1fGc+MLT6j5r+Ab7jku36PFTl4PP6MiWw0BJscM9QpZEo00qixNQoRg==", + "dev": true + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/color": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.6.tgz", + "integrity": "sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==", + "dev": true, + "dependencies": { + "@types/color-convert": "*" + } + }, + "node_modules/@types/color-convert": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.3.tgz", + "integrity": "sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==", + "dev": true, + "dependencies": { + "@types/color-name": "*" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-hulKeREDdLFesGQjl96+4aoJSHY5b2GRjagzzcqCfIrWhe5vkCqIvrLbqzBaI1q94Vg8DNJZZqTR5ocdWmWclg==", + "dev": true + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "optional": true, + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "optional": true + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "optional": true + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "optional": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/emscripten": { + "version": "1.39.11", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.11.tgz", + "integrity": "sha512-dOeX2BeNA7j6BTEqJQL3ut0bRCfsyQMd5i4FT8JfHfYhAOuJPCGh0dQFbxVJxUyQ+75x6enhDdndGb624/QszA==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/google-spreadsheet": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/google-spreadsheet/-/google-spreadsheet-3.1.5.tgz", + "integrity": "sha512-7N+mDtZ1pmya2RRFPPl4KYc2TRgiqCNBLUZfyrKfER+u751JgCO+C24/LzF70UmUm/zhHUbzRZ5mtfaxekQ1ZQ==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "devOptional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "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==", + "devOptional": true + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "devOptional": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "devOptional": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "devOptional": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.4.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.4.tgz", + "integrity": "sha512-qezb65VIH7X1wobSnd6Lvdve7PXSyQRa3dljTkhTtDhi603RvHQCshSlJcuyMLHJpeHgY3NKwvDJWxMOOHxGDQ==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "devOptional": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "optional": true, + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "optional": true + }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/oauth": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.4.tgz", + "integrity": "sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/papaparse": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.7.tgz", + "integrity": "sha512-f2HKmlnPdCvS0WI33WtCs5GD7X1cxzzS/aduaxSu3I7TbhWlENjSPs6z5TaB9K0J+BH1jbmqTaM+ja5puis4wg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/passport": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.16.tgz", + "integrity": "sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/passport-google-oauth20": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@types/passport-google-oauth20/-/passport-google-oauth20-2.0.16.tgz", + "integrity": "sha512-ayXK2CJ7uVieqhYOc6k/pIr5pcQxOLB6kBev+QUGS7oEZeTgIs1odDobXRqgfBPvXzl0wXCQHftV5220czZCPA==", + "dev": true, + "dependencies": { + "@types/express": "*", + "@types/passport": "*", + "@types/passport-oauth2": "*" + } + }, + "node_modules/@types/passport-oauth2": { + "version": "1.4.16", + "resolved": "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.16.tgz", + "integrity": "sha512-Sdr0rpAdkiidUOtyaapGgvXyMjqYlMTFHRy7gtJtzr0/ysEIa72N3j2FSHIRc14h29g1+dzDl8IW2WT2Mu29vQ==", + "dev": true, + "dependencies": { + "@types/express": "*", + "@types/oauth": "*", + "@types/passport": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/react": { + "version": "18.3.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", + "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "devOptional": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "node_modules/@types/unist": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==", + "devOptional": true + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "node_modules/@types/validator": { + "version": "13.11.10", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz", + "integrity": "sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg==" + }, + "node_modules/@types/webpack-env": { + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz", + "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==", + "dev": true + }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "devOptional": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "devOptional": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", + "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", + "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", + "dev": true, + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", + "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", + "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.3.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", + "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "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.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, + "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.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "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.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "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/@yarnpkg/fslib": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", + "dev": true, + "dependencies": { + "@yarnpkg/libzip": "^2.3.0", + "tslib": "^1.13.0" + }, + "engines": { + "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" + } + }, + "node_modules/@yarnpkg/fslib/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@yarnpkg/libzip": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", + "dev": true, + "dependencies": { + "@types/emscripten": "^1.39.6", + "tslib": "^1.13.0" + }, + "engines": { + "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" + } + }, + "node_modules/@yarnpkg/libzip/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@zkochan/js-yaml": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@zkochan/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "devOptional": true + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "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/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "devOptional": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/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/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz", + "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==", + "dev": true, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aggregate-error/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "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/alphavantage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/alphavantage/-/alphavantage-2.2.0.tgz", + "integrity": "sha512-wsN6c78DWEfnmT7zIqs95N0cBT/h9WHxby3pSscUtTA+wRIO29BqDJQqZnQcy6GddlIsBp5GQk8gEeIAR0FdBg==", + "dependencies": { + "cross-fetch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/alphavantage/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/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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": "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/ansi-styles/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/ansi-styles/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/any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "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/anymatch/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/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "devOptional": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "devOptional": true + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "dependencies": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "devOptional": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/await-lock": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "node_modules/axios": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", + "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "devOptional": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-plugin-const-enum": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", + "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.3.3", + "@babel/traverse": "^7.16.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "devOptional": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "devOptional": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "devOptional": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-typescript-metadata": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", + "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "devOptional": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "devOptional": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-arraybuffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", + "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/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/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/big.js": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", + "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bigjs" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/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.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/bootstrap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "node_modules/borc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/borc/-/borc-2.1.2.tgz", + "integrity": "sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w==", + "dependencies": { + "bignumber.js": "^9.0.0", + "buffer": "^5.5.0", + "commander": "^2.15.0", + "ieee754": "^1.1.13", + "iso-url": "~0.4.7", + "json-text-sequence": "~0.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/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/browser-assert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "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.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "devOptional": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true, + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "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/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bull": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/bull/-/bull-4.10.4.tgz", + "integrity": "sha512-o9m/7HjS/Or3vqRd59evBlWCXd9Lp+ALppKseoSKHaykK46SmRjAilX98PgmOz1yeVaurt8D5UtvEt4bUjM3eA==", + "dependencies": { + "cron-parser": "^4.2.1", + "debuglog": "^1.0.0", + "get-port": "^5.1.1", + "ioredis": "^5.0.0", + "lodash": "^4.17.21", + "msgpackr": "^1.5.2", + "semver": "^7.3.2", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/bull/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/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "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/cacache": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/cache-manager": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.4.3.tgz", + "integrity": "sha512-6+Hfzy1SNs/thUwo+07pV0ozgxc4sadrAN0eFVGvXl/X9nz3J0BqEnnEoyxEn8jnF+UkEo0MKpyk9BO80hMeiQ==", + "dependencies": { + "async": "3.2.0", + "lodash": "^4.17.21", + "lru-cache": "6.0.0" + } + }, + "node_modules/cache-manager-redis-store": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cache-manager-redis-store/-/cache-manager-redis-store-2.0.0.tgz", + "integrity": "sha512-bWLWlUg6nCYHiJLCCYxY2MgvwvKnvlWwrbuynrzpjEIhfArD2GC9LtutIHFEPeyGVQN6C+WEw+P3r+BFBwhswg==", + "dependencies": { + "redis": "^3.0.2" + }, + "engines": { + "node": ">= 8.3" + } + }, + "node_modules/cache-manager/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/cache-manager/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/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "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==", + "devOptional": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001653", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", + "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "devOptional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chart.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.2.0.tgz", + "integrity": "sha512-wbtcV+QKeH0F7gQZaCJEIpsNriFheacouJQTVIjITi3eQA8bTlIBoknz0+dgV79aeKLNMAX+nDslIVE/nJ3rzA==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": "^7.0.0" + } + }, + "node_modules/chartjs-adapter-date-fns": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-3.0.0.tgz", + "integrity": "sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==", + "peerDependencies": { + "chart.js": ">=2.8.0", + "date-fns": ">=2.0.0" + } + }, + "node_modules/chartjs-chart-treemap": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chartjs-chart-treemap/-/chartjs-chart-treemap-2.3.1.tgz", + "integrity": "sha512-GW+iODLICIJhNZtHbTtaOjCwRIxmXcquXRKDFMsrkXyqyDeSN1aiVfzNNj6Xjy55soopqRA+YfHqjT2S2zF7lQ==", + "peerDependencies": { + "chart.js": ">=3.0.0" + } + }, + "node_modules/chartjs-plugin-annotation": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chartjs-plugin-annotation/-/chartjs-plugin-annotation-2.1.2.tgz", + "integrity": "sha512-kmEp2WtpogwnKKnDPO3iO3mVwvVGtmG5BkZVtAEZm5YzJ9CYxojjYEgk7OTrFbJ5vU098b84UeJRe8kRfNcq5g==", + "peerDependencies": { + "chart.js": ">=3.7.0" + } + }, + "node_modules/chartjs-plugin-datalabels": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.2.0.tgz", + "integrity": "sha512-14ZU30lH7n89oq+A4bWaJPnAG8a7ZTk7dKf48YAzMvJjQtjrgg5Dpk9f+LbjCF6bpx3RAGTeL13IXpKQYyRvlw==", + "peerDependencies": { + "chart.js": ">=3.0.0" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "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.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/citty/node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.0.tgz", + "integrity": "sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g==", + "devOptional": true + }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + }, + "node_modules/class-validator": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz", + "integrity": "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==", + "dependencies": { + "@types/validator": "^13.11.8", + "libphonenumber-js": "^1.10.53", + "validator": "^13.9.0" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "devOptional": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "engines": { + "node": ">=0.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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "dependencies": { + "restore-cursor": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", + "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "dependencies": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "optional": true, + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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/cliui/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/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "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/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "devOptional": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codelyzer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", + "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", + "dev": true, + "dependencies": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + }, + "peerDependencies": { + "@angular/compiler": ">=2.3.1 <12.0.0 || ^11.0.0-next || ^11.1.0-next || ^11.2.0-next", + "@angular/core": ">=2.3.1 <12.0.0 || ^11.0.0-next || ^11.1.0-next || ^11.2.0-next", + "tslint": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/codelyzer/node_modules/@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "dev": true, + "peerDependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/codelyzer/node_modules/@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "dev": true, + "peerDependencies": { + "rxjs": "^6.5.3", + "tslib": "^1.10.0", + "zone.js": "~0.10.2" + } + }, + "node_modules/codelyzer/node_modules/aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", + "dev": true, + "dependencies": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "node_modules/codelyzer/node_modules/axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "dependencies": { + "ast-types-flow": "0.0.7" + } + }, + "node_modules/codelyzer/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/codelyzer/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codelyzer/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/codelyzer/node_modules/zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", + "dev": true + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "devOptional": true + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "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/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "devOptional": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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/comment-json": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", + "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "dev": true, + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "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/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/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/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==", + "devOptional": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/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/concat-stream/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/concat-stream/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-stream/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/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "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/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "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/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", + "dependencies": { + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.1", + "globby": "^14.0.0", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "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": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "dependencies": { + "browserslist": "^4.23.0" + }, + "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/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "optional": true, + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "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/countries-and-timezones": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/countries-and-timezones/-/countries-and-timezones-3.4.1.tgz", + "integrity": "sha512-INeHGCony4XUUR8iGL/lmt9s1Oi+n+gFHeJAMfbV5hJfYeDOB8JG1oxz5xFQu5oBZoRCJe/87k1Vzue9DoIauA==", + "engines": { + "node": ">=8.x", + "npm": ">=5.x" + } + }, + "node_modules/countries-list": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/countries-list/-/countries-list-3.1.0.tgz", + "integrity": "sha512-HpTBLZba1VPTZSjUnUwR7SykxV7Z/7/+ZM5x5wi5tO99Qvom6bE2SC+AQ18016ujg3jSlYBbMITrHNnPAHSM9Q==" + }, + "node_modules/countup.js": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.8.0.tgz", + "integrity": "sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ==" + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "devOptional": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/critters": { + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.24.tgz", + "integrity": "sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==", + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "postcss-media-query-parser": "^0.2.3" + } + }, + "node_modules/critters/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/critters/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/critters/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/critters/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/cron": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cron/-/cron-2.4.0.tgz", + "integrity": "sha512-Cx77ic1TyIAtUggr0oAhtS8MLzPBUqGNIvdDM7jE3oFIxfe8LXWI9q3iQN/H2CebAiMir53LQKWOhEKnzkJTAQ==", + "dependencies": { + "luxon": "^3.2.1" + } + }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "dependencies": { + "luxon": "^3.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.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-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-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.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/cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", + "dev": true, + "dependencies": { + "through": "X.X.X" + } + }, + "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": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "devOptional": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "devOptional": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "devOptional": true + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/cypress": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.2.1.tgz", + "integrity": "sha512-OYkSgzA4J4Q7eMjZvNf5qWpBLR4RXrkqjL3UZ1UzGGLAskO0nFTi/RomNTG6TKvL3Zp4tw4zFY1gp5MtmkCZrA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/listr-verbose-renderer": "^0.4.1", + "@cypress/request": "^2.88.5", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "^6.0.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.1.2", + "blob-util": "2.0.2", + "bluebird": "^3.7.2", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-table3": "~0.6.0", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "debug": "^4.1.1", + "eventemitter2": "^6.4.2", + "execa": "^4.0.2", + "executable": "^4.1.1", + "extract-zip": "^1.7.0", + "fs-extra": "^9.0.1", + "getos": "^3.2.1", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.2", + "lazy-ass": "^1.6.0", + "listr": "^0.14.3", + "lodash": "^4.17.19", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "moment": "^2.27.0", + "ospath": "^1.2.2", + "pretty-bytes": "^5.4.1", + "ramda": "~0.26.1", + "request-progress": "^3.0.0", + "supports-color": "^7.2.0", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "url": "^0.11.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cypress/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cypress/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==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cypress/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cytoscape": { + "version": "3.29.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.29.2.tgz", + "integrity": "sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ==", + "optional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "optional": true, + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "optional": true, + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "optional": true, + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "optional": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "optional": true, + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "optional": true, + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "optional": true, + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "optional": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "optional": true, + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/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==", + "optional": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "optional": true, + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "optional": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "optional": true, + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "optional": true, + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "optional": true, + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "optional": true, + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "optional": true + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "optional": true, + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "optional": true + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "optional": true, + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "optional": true, + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "optional": true, + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "optional": true, + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "optional": true, + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "optional": true, + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "optional": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "optional": true, + "dependencies": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "devOptional": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "optional": true + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "engines": { + "node": "*" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "devOptional": true + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "optional": true, + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/default-gateway/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/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/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/default-gateway/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/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "optional": true, + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "devOptional": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/delimit-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", + "integrity": "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "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/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "dev": true, + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "devOptional": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "devOptional": true, + "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/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "devOptional": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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/dompurify": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.2.tgz", + "integrity": "sha512-hLGGBI1tw5N8qTELr3blKjAML/LY4ANxksbS612UiJyDfyf/2D092Pvm+S7pmeTGJRqvlJkFzBoHBQKgQlOQVg==", + "optional": true + }, + "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==", + "devOptional": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.1.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz", + "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "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/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==" + }, + "node_modules/elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/elkjs": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", + "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", + "optional": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "devOptional": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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/emoji-toolkit": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-8.0.0.tgz", + "integrity": "sha512-Vz8YIqQJsQ+QZ4yuKMMzliXceayqfWbNjb6bST+vm77QAhU2is3I+/PRxrNknW+q1bvHHMgjLCQXxzINWLVapg==", + "optional": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "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/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/envalid": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/envalid/-/envalid-7.3.1.tgz", + "integrity": "sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg==", + "dependencies": { + "tslib": "2.3.1" + }, + "engines": { + "node": ">=8.12" + } + }, + "node_modules/envalid/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "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/error-inject": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz", + "integrity": "sha512-JM8N6PytDbmIYm1IhPWlo8vr3NtfjhDY/1MhD/a5b/aad/USE8a0+NsqE9d5n+GVGmuNkPQWm4bFQWv18d8tMg==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/esbuild-register": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz", + "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.21.5.tgz", + "integrity": "sha512-L/FlOPMMFtw+6qPAbuPvJXdrOYOp9yx/PEwSrIZW0qghY4vgV003evdYDwqQ/9ENMQI0B6RMod9xT4FHtto6OQ==", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "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/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "devOptional": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-plugin-cypress": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.1.tgz", + "integrity": "sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w==", + "dev": true, + "dependencies": { + "globals": "^13.20.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" + } + }, + "node_modules/eslint-plugin-cypress/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-cypress/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/eslint-plugin-storybook": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.15.tgz", + "integrity": "sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==", + "dev": true, + "dependencies": { + "@storybook/csf": "^0.0.1", + "@typescript-eslint/utils": "^5.45.0", + "requireindex": "^1.1.0", + "ts-dedent": "^2.2.0" + }, + "engines": { + "node": "12.x || 14.x || >= 16" + }, + "peerDependencies": { + "eslint": ">=6" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", + "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-plugin-storybook/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/eslint-plugin-storybook/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/eslint-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", + "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/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/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/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/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/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" + }, + "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": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "devOptional": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "devOptional": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "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/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/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/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/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.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.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "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/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "devOptional": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-package-json": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-1.2.0.tgz", + "integrity": "sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==", + "dev": true, + "dependencies": { + "walk-up-path": "^3.0.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.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==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-file-up": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", + "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", + "dev": true, + "dependencies": { + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", + "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", + "dev": true, + "dependencies": { + "find-file-up": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/flow-parser": { + "version": "0.235.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.235.1.tgz", + "integrity": "sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", + "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "vue-template-compiler": "*", + "webpack": "^5.11.0" + }, + "peerDependenciesMeta": { + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/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==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-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==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "devOptional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "devOptional": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "dependencies": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "devOptional": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/giget": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz", + "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==", + "dev": true, + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.3", + "nypm": "^0.3.8", + "ohash": "^1.1.3", + "pathe": "^1.1.2", + "tar": "^6.2.0" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/giget/node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "devOptional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "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/glob/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==", + "devOptional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "dev": true, + "dependencies": { + "ini": "1.3.7" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/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/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "optional": true, + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/google-auth-library": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz", + "integrity": "sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==", + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-auth-library/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/google-auth-library/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/google-p12-pem": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", + "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", + "deprecated": "Package is no longer maintained", + "dependencies": { + "node-forge": "^1.3.1" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/google-spreadsheet": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/google-spreadsheet/-/google-spreadsheet-3.2.0.tgz", + "integrity": "sha512-z7XMaqb+26rdo8p51r5O03u8aPLAPzn5YhOXYJPcf2hdMVr0dUbIARgdkRdmGiBeoV/QoU/7VNhq1MMCLZv3kQ==", + "dependencies": { + "axios": "^0.21.4", + "google-auth-library": "^6.1.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/google-spreadsheet/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "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/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gtoken": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", + "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", + "dependencies": { + "gaxios": "^4.0.0", + "google-p12-pem": "^3.1.3", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "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-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "dev": true, + "dependencies": { + "@types/hast": "^3.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==", + "devOptional": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/helmet": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.0.0.tgz", + "integrity": "sha512-MsIgYmdBh460ZZ8cJC81q4XJknjG567wzEmv46WOBblDb6TUd3z8/GhgmsM9pn8g2B80tAJ4m5/d3Bi1KrSUBQ==", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "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-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "devOptional": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "devOptional": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "devOptional": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "devOptional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "devOptional": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "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-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "devOptional": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "devOptional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", + "dependencies": { + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-server/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/http-server/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/http-server/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-server/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/http-status-codes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==" + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "engines": { + "node": ">=10.18" + } + }, + "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/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + }, + "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-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "devOptional": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "devOptional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ionicons": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.4.0.tgz", + "integrity": "sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ==", + "dependencies": { + "@stencil/core": "^4.0.3" + } + }, + "node_modules/ioredis": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.1.tgz", + "integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==", + "dependencies": { + "@ioredis/commands": "^1.1.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "dependencies": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "engines": { + "node": ">=16" + }, + "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-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "dependencies": { + "symbol-observable": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-observable/node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "devOptional": true + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/iso-url": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-0.4.7.tgz", + "integrity": "sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog==", + "engines": { + "node": ">=10" + } + }, + "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/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "devOptional": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "devOptional": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "devOptional": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "devOptional": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "devOptional": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "devOptional": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "devOptional": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-changed-files/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==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/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==", + "devOptional": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/jest-changed-files/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==", + "devOptional": true + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "devOptional": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-circus/node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "devOptional": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "devOptional": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "devOptional": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "devOptional": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "devOptional": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "devOptional": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "devOptional": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "devOptional": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "devOptional": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "devOptional": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "devOptional": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "devOptional": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "devOptional": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "devOptional": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "devOptional": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-preset-angular": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.1.0.tgz", + "integrity": "sha512-UJwPtpsAMl30UtBjHW0Ai0hhoKsNURC1dXH5tSYjumUsWR7iDke+oBEykz7uXv4rN+PWgeNIqkxo4KHQjOITlw==", + "dev": true, + "dependencies": { + "bs-logger": "^0.2.6", + "esbuild-wasm": ">=0.15.13", + "jest-environment-jsdom": "^29.0.0", + "jest-util": "^29.0.0", + "pretty-format": "^29.0.0", + "ts-jest": "^29.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "optionalDependencies": { + "esbuild": ">=0.15.13" + }, + "peerDependencies": { + "@angular-devkit/build-angular": ">=15.0.0 <19.0.0", + "@angular/compiler-cli": ">=15.0.0 <19.0.0", + "@angular/core": ">=15.0.0 <19.0.0", + "@angular/platform-browser-dynamic": ">=15.0.0 <19.0.0", + "jest": "^29.0.0", + "typescript": ">=4.8" + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "devOptional": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "devOptional": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "devOptional": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "devOptional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "devOptional": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/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==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "devOptional": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "devOptional": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "devOptional": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "devOptional": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "devOptional": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "devOptional": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "devOptional": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "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/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "peer": true + }, + "node_modules/js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + }, + "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": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "devOptional": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/jscodeshift": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.23.3", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + }, + "peerDependenciesMeta": { + "@babel/preset-env": { + "optional": true + } + } + }, + "node_modules/jscodeshift/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/jscodeshift/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "devOptional": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "devOptional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "devOptional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "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-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "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/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json-text-sequence": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", + "integrity": "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==", + "dependencies": { + "delimit-stream": "0.1.0" + } + }, + "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/jsonc-eslint-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", + "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/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/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/katex": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", + "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "optional": true, + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "optional": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", + "optional": true + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/koa": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.11.0.tgz", + "integrity": "sha512-EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA==", + "dev": true, + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "~3.1.0", + "delegates": "^1.0.0", + "depd": "^1.1.2", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "error-inject": "^1.0.0", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^1.2.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "node_modules/koa-convert": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", + "integrity": "sha512-K9XqjmEDStGX09v3oxR7t5uPRy0jqJdvodHa6wxWTHrTfDq0WUNnYTOOUZN6g8OM8oZQXprQASbiIXG2Ez8ehA==", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^3.0.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/koa-convert/node_modules/koa-compose": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", + "integrity": "sha512-8gen2cvKHIZ35eDEik5WOo8zbVp9t4cP8p4hW4uE55waxolLRexKKrqfCpwhGVppnB40jWeF8bZeTVg99eZgPw==", + "dev": true, + "dependencies": { + "any-promise": "^1.1.0" + } + }, + "node_modules/koa/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/koa/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/koa/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/launch-editor": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz", + "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "optional": true + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "engines": { + "node": "> 0.8" + } + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz", + "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/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==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.1.tgz", + "integrity": "sha512-Wze1LPwcnzvcKGcRHFGFECTaLzxOtujwpf924difr5zniyYv1C2PiW0419qDR7m8lKDxsImu5mwxFuXhXpjmvw==" + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "dependencies": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "listr": "^0.14.2" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr-update-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "node_modules/listr-verbose-renderer/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/listr-verbose-renderer/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/listr/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/listr/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/listr/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/listr2": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.3.tgz", + "integrity": "sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw==", + "dev": true, + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.0.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/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==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/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==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lmdb": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.0.12.tgz", + "integrity": "sha512-JnoEulTgveoC64vlYJ9sufGLuNkk6TcxSYpKxSC9aM42I61jIv3pQH0fgb6qW7HV0+FNqA3g1WCQQYfhfawGoQ==", + "hasInstallScript": true, + "dependencies": { + "msgpackr": "^1.10.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.4.1", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.0.12", + "@lmdb/lmdb-darwin-x64": "3.0.12", + "@lmdb/lmdb-linux-arm": "3.0.12", + "@lmdb/lmdb-linux-arm64": "3.0.12", + "@lmdb/lmdb-linux-x64": "3.0.12", + "@lmdb/lmdb-win32-x64": "3.0.12" + } + }, + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + }, + "node_modules/lmdb/node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "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": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "optional": true + }, + "node_modules/lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/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/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "devOptional": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "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/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/luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-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==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dev": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "devOptional": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true + }, + "node_modules/markdown-to-jsx": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz", + "integrity": "sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==", + "dev": true, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/marked": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "optional": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "optional": true, + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz", + "integrity": "sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ==", + "deprecated": "this will be v4", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "dev": true, + "dependencies": { + "map-or-similar": "^1.5.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/mermaid": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz", + "integrity": "sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==", + "optional": true, + "dependencies": { + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.28.1", + "cytoscape-cose-bilkent": "^4.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.9.0", + "katex": "^0.16.9", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + } + }, + "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/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true + }, + "node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true + }, + "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/micromatch/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/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.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/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/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-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "3.0.0-canary.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", + "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==", + "engines": { + "node": ">=12.13" + } + }, + "node_modules/msgpackr": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz", + "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", + "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.0.7" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" + } + }, + "node_modules/multer": { + "version": "1.4.4-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", + "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "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/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "devOptional": true + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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/ng-extract-i18n-merge": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.12.0.tgz", + "integrity": "sha512-ohzt7WLraXS0PVPEohYK0f/TxzGu/1vOYeukncd8r6sJybrSUG/dm/lpxC4Ozkhq4rhKEHRPRTKA5x59qjIfjw==", + "dependencies": { + "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0", + "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "xmldoc": "^1.1.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": { + "version": "0.1800.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1800.2.tgz", + "integrity": "sha512-PX7lCTAqWe9C40+fie+DAc8vhpGA+JgZKWWrMHUTV/iZx8RXx2X4xGQsqYu36p4i3MSfQdbn+0xLWGmjScPVOQ==", + "dependencies": { + "@angular-devkit/core": "18.0.2", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/core": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.0.2.tgz", + "integrity": "sha512-QXcEdfmODc0rKblBerk30yw70fypIkFm6gQBLJgsshpwc+TMA+fuMLcPQebOTzKLtD2tNUkk/7SrWPQIGqeXaA==", + "dependencies": { + "ajv": "8.13.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.2.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" + }, + "node_modules/ng-extract-i18n-merge/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/ngx-device-detector": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ngx-device-detector/-/ngx-device-detector-8.0.0.tgz", + "integrity": "sha512-ik6EwUKnlN+xwoWHzyJp5+V+QRWYrmpTqAvRwa16xBnAVd7/i3jElN7MZjs/InwcYz7AW3XcSNeu+XRvtHgb9w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^18.0.0", + "@angular/core": "^18.0.0" + } + }, + "node_modules/ngx-markdown": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-18.0.0.tgz", + "integrity": "sha512-sFR9dIOKobdhNKZTlCrX3RmpoAhZ7k3T9h7oWJP676Oe9BsoxuAYZKJmFDT20vrY6xmFD3WtLJDZR7rNRLf6Uw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "clipboard": "^2.0.11", + "emoji-toolkit": "^8.0.0", + "katex": "^0.16.0", + "mermaid": "^10.6.0", + "prismjs": "^1.28.0" + }, + "peerDependencies": { + "@angular/common": "^18.0.0", + "@angular/core": "^18.0.0", + "@angular/platform-browser": "^18.0.0", + "marked": ">= 9.0.0 < 13.0.0", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.14.0" + } + }, + "node_modules/ngx-skeleton-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-7.0.0.tgz", + "integrity": "sha512-myc6GNcNhyksZrimIFkCxeihi0kQ8JhQVZiGbtiIv4gYrnnRk5nXbs3kYitK8E8OstHG+jlsmRofqGBxuIsYTA==", + "dependencies": { + "perf-marks": "^1.13.4", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=8.0.0", + "@angular/core": ">=8.0.0" + } + }, + "node_modules/ngx-stripe": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-stripe/-/ngx-stripe-18.0.0.tgz", + "integrity": "sha512-AT67vLeqEUDMnK5TfEaorumYJyOWqecbrh/1UWNtN8vF6Yzb0L/Dty3ANAa/QQi0OvBg6gXrudrhEnT8pT5lng==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=18.0.0 <19.0.0", + "@angular/core": ">=18.0.0 <19.0.0", + "@stripe/stripe-js": ">=3.0.0 <4.0.0" + } + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "optional": true + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-dir/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-dir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "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-fetch-native": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "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-gyp": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", + "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", + "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", + "optional": true, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "devOptional": true + }, + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "node_modules/node-schedule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", + "dev": true, + "dependencies": { + "cron-parser": "^4.2.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", + "optional": true + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "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-bundled": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz", + "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz", + "integrity": "sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", + "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", + "dev": true, + "dependencies": { + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", + "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==", + "devOptional": true + }, + "node_modules/nx": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/nx/-/nx-19.5.6.tgz", + "integrity": "sha512-qjP17aa5ViXSpo0bDgJ7O3b8EY/0+PbX7ZIKvG1g6qasohtfM1y4Sx2bbSow0zCKU0+r1LnR53Q0lyX4OOgtUg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@napi-rs/wasm-runtime": "0.2.4", + "@nrwl/tao": "19.5.6", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.7", + "axios": "^1.7.2", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "front-matter": "^4.0.2", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "jest-diff": "^29.4.1", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "9.0.3", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "ora": "5.3.0", + "semver": "^7.5.3", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "nx": "bin/nx.js", + "nx-cloud": "bin/nx-cloud.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "19.5.6", + "@nx/nx-darwin-x64": "19.5.6", + "@nx/nx-freebsd-x64": "19.5.6", + "@nx/nx-linux-arm-gnueabihf": "19.5.6", + "@nx/nx-linux-arm64-gnu": "19.5.6", + "@nx/nx-linux-arm64-musl": "19.5.6", + "@nx/nx-linux-x64-gnu": "19.5.6", + "@nx/nx-linux-x64-musl": "19.5.6", + "@nx/nx-win32-arm64-msvc": "19.5.6", + "@nx/nx-win32-x64-msvc": "19.5.6" + }, + "peerDependencies": { + "@swc-node/register": "^1.8.0", + "@swc/core": "^1.3.85" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/nx/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/nx/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/nx/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/nx/node_modules/dotenv-expand": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "dev": true, + "dependencies": { + "dotenv": "^16.4.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/nx/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/nx/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/nx/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/nx/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dev": true, + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/nypm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/nypm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/oauth": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.10.0.tgz", + "integrity": "sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q==" + }, + "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.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "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/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "dev": true + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open-color": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/open-color/-/open-color-1.9.1.tgz", + "integrity": "sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw==" + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/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/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ordered-binary": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz", + "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==" + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "engines": { + "node": ">=8" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/pacote": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", + "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", + "dev": true, + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/papaparse": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz", + "integrity": "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "devOptional": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "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-json/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/parse-json/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/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "dependencies": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.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/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dependencies": { + "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==", + "devOptional": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/passport": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", + "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", + "dependencies": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-google-oauth20": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz", + "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==", + "dependencies": { + "passport-oauth2": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/passport-jwt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz", + "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==", + "dependencies": { + "jsonwebtoken": "^9.0.0", + "passport-strategy": "^1.0.0" + } + }, + "node_modules/passport-oauth2": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz", + "integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==", + "dependencies": { + "base64url": "3.x.x", + "oauth": "0.10.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "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==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "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-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "node_modules/pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/perf-marks": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/perf-marks/-/perf-marks-1.14.2.tgz", + "integrity": "sha512-N0/bQcuTlETpgox/DsXS1voGjqaoamMoiyhncgeW3rSHy/qw8URVgmPRYfFDQns/+C6yFUHDbeSBGL7ixT6Y4A==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "devOptional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/piscina": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz", + "integrity": "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==", + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "devOptional": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "devOptional": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "devOptional": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "devOptional": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/polished": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/postcss-loader/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/postcss-loader/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss-loader/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/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "dev": true, + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "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": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "dev": true, + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-organize-attributes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-attributes/-/prettier-plugin-organize-attributes-1.0.0.tgz", + "integrity": "sha512-+NmameaLxbCcylEXsKPmawtzla5EE6ECqvGkpfQz4KM847fXDifB1gFnPQEpoADAq6IXg+cMI8Z0ISJEXa6fhg==", + "dev": true, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "prettier": "^3.0.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "devOptional": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prisma": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.18.0.tgz", + "integrity": "sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==", + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "5.18.0" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + } + }, + "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==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "devOptional": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "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/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "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": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "dependencies": { + "tslib": "^2.6.1" + } + }, + "node_modules/pvtsutils/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "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/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "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/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rambda": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.3.0.tgz", + "integrity": "sha512-cl/7DCCKNxmsbc0dXZTJTY08rvDdzLhVfE6kPBson1fWzDapLzv0RKSzjpmAqP53fkQqAvq05gpUVHTrUNsuxg==", + "dev": true + }, + "node_modules/ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", + "dev": true + }, + "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.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/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "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/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "dev": true, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "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/readdirp/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/recast": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", + "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "dev": true, + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redis": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", + "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", + "dependencies": { + "denque": "^1.5.0", + "redis-commands": "^1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-redis" + } + }, + "node_modules/redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/redis/node_modules/denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "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/rehype-external-links": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", + "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-is-element": "^3.0.0", + "is-absolute-url": "^4.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "github-slugger": "^2.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "devOptional": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "devOptional": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/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==", + "devOptional": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/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==", + "devOptional": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/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==", + "devOptional": true, + "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==", + "devOptional": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "devOptional": true, + "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==", + "devOptional": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-in-file": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.0.1.tgz", + "integrity": "sha512-KbhgPq04eA+TxXuUxpgWIH9k/TjF+28ofon2PXP7vq6izAILhxOtksCVcLuuQLtyjouBaPdlH6RJYYcSPVxCOA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "glob": "^8.1.0", + "yargs": "^17.7.2" + }, + "bin": { + "replace-in-file": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/replace-in-file/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/replace-in-file/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/replace-in-file/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/replace-in-file/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace-in-file/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/replace-in-file/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "engines": { + "node": ">=0.10.5" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "devOptional": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/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/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "dependencies": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "optional": true + }, + "node_modules/rollup": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.1.tgz", + "integrity": "sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.1", + "@rollup/rollup-android-arm64": "4.21.1", + "@rollup/rollup-darwin-arm64": "4.21.1", + "@rollup/rollup-darwin-x64": "4.21.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.1", + "@rollup/rollup-linux-arm-musleabihf": "4.21.1", + "@rollup/rollup-linux-arm64-gnu": "4.21.1", + "@rollup/rollup-linux-arm64-musl": "4.21.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.1", + "@rollup/rollup-linux-riscv64-gnu": "4.21.1", + "@rollup/rollup-linux-s390x-gnu": "4.21.1", + "@rollup/rollup-linux-x64-gnu": "4.21.1", + "@rollup/rollup-linux-x64-musl": "4.21.1", + "@rollup/rollup-win32-arm64-msvc": "4.21.1", + "@rollup/rollup-win32-ia32-msvc": "4.21.1", + "@rollup/rollup-win32-x64-msvc": "4.21.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "engines": { + "node": ">=18" + }, + "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/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "optional": true + }, + "node_modules/rxjs": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "optional": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/safevalues": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", + "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + }, + "node_modules/sass": { + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz", + "integrity": "sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==", + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "devOptional": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv-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/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "optional": true + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", + "dev": true, + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/semver-dsl/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "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/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "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/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==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shx": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", + "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "dev": true, + "dependencies": { + "minimist": "^1.2.3", + "shelljs": "^0.8.5" + }, + "bin": { + "shx": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sigstore": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", + "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/simple-cbor": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/simple-cbor/-/simple-cbor-0.4.1.tgz", + "integrity": "sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.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==", + "devOptional": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/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/sockjs/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/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sorted-array-functions": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", + "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "dependencies": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "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.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "devOptional": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/static-eval/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/storybook": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.2.6.tgz", + "integrity": "sha512-8j30wDxQmkcqI0fWcSYFsUCjErsY1yTWbTW+yjbwM8DyW18Cud6CwbFRCxjFsH+2M0CjP6Pqs/m1PGI0vcQscQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/types": "^7.24.0", + "@storybook/codemod": "8.2.6", + "@storybook/core": "8.2.6", + "@types/semver": "^7.3.4", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", + "chalk": "^4.1.0", + "commander": "^6.2.1", + "cross-spawn": "^7.0.3", + "detect-indent": "^6.1.0", + "envinfo": "^7.7.3", + "execa": "^5.0.0", + "fd-package-json": "^1.2.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "giget": "^1.0.0", + "globby": "^14.0.1", + "jscodeshift": "^0.15.1", + "leven": "^3.1.0", + "ora": "^5.4.1", + "prettier": "^3.1.1", + "prompts": "^2.4.0", + "semver": "^7.3.7", + "strip-json-comments": "^3.0.1", + "tempy": "^3.1.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0" + }, + "bin": { + "getstorybook": "bin/index.cjs", + "sb": "bin/index.cjs", + "storybook": "bin/index.cjs" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/storybook/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/storybook/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/storybook/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/storybook/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/storybook/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/storybook/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/storybook/node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/storybook/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/storybook/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/storybook/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/storybook/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/storybook/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/storybook/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/streamroller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/streamroller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "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-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "devOptional": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "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==", + "devOptional": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stripe": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-15.11.0.tgz", + "integrity": "sha512-qmZF0PN1jRVpiQrXL8eTb9Jy/6S+aUlcDquKBFT2h3PkaD7RZ444FIojVXUg67FK2zFIUNXgMv02c7csdL5qHg==", + "dependencies": { + "@types/node": ">=8.1.0", + "qs": "^6.11.0" + }, + "engines": { + "node": ">=12.*" + } + }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "optional": true + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "devOptional": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz", + "integrity": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.12", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/stylus/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "devOptional": true + }, + "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/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-pan-zoom": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz", + "integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==" + }, + "node_modules/svgmap": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/svgmap/-/svgmap-2.6.0.tgz", + "integrity": "sha512-MePkVjgYlHwEfCSuGt+wB6WX6Z2fTD6yDtqZO5syzKYH7gamt1Hp9f/Bw5R49OvBtbsF7WCaGR0/GhewZGGA+w==", + "dependencies": { + "svg-pan-zoom": "^3.6.1" + } + }, + "node_modules/svgo": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.1.tgz", + "integrity": "sha512-xQQTIGRl3gHTO2PFlZFLl+Xwofj+CMOPitfoByGBNAniQnY6SbGgd31u3C8RTqdlqZqYNl9Sb83VXbimVHcU6w==", + "deprecated": "introduced breaking changes, reverted in v3.3.2", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "devOptional": true + }, + "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/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", + "dev": true, + "dependencies": { + "memoizerific": "^1.11.3" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", + "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/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/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "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/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/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/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "devOptional": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/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==", + "devOptional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "devOptional": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie-file-store": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tough-cookie-file-store/-/tough-cookie-file-store-2.0.3.tgz", + "integrity": "sha512-sMpZVcmFf6EYFHFFl+SYH4W1/OnXBYMGDsv2IlbQ2caHyFElW/UR/gpj/KYU1JwmP4dE9xqwv2+vWcmlXHojSw==", + "dependencies": { + "tough-cookie": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "devOptional": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "devOptional": true, + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-jest": { + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/tslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "peer": true + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "peer": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "peer": true + }, + "node_modules/tuf-js": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "dev": true, + "dependencies": { + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "node_modules/twitter-api-v2": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.14.2.tgz", + "integrity": "sha512-389e/rWaN8zWkmD5z2IpKVb5+ojPxVtrexQoGBI1Xfib1mE/9M7k7zbnZ3Q/WLwthwcWkQIlB25ecT64AL8LvQ==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "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/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", + "dev": true + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + }, + "node_modules/undici": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", + "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "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/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "optional": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unplugin": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", + "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "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.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/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==", + "dev": true + }, + "node_modules/url/node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "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==", + "devOptional": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "optional": true, + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uvu/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "optional": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/uvu/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "devOptional": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "engines": { + "node": ">= 0.10" + } + }, + "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/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/vite": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.2.tgz", + "integrity": "sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "devOptional": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "devOptional": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "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/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" + }, + "node_modules/web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", + "optional": true + }, + "node_modules/webcrypto-core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.0.tgz", + "integrity": "sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==", + "peer": true, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + } + }, + "node_modules/webcrypto-core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "peer": true + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "devOptional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack": { + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "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==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", + "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/memfs": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", + "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "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.4.0", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/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/webpack-dev-server/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/webpack-dev-server/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-hot-middleware": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", + "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", + "dev": true, + "dependencies": { + "ansi-html-community": "0.0.8", + "html-entities": "^2.1.0", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true + }, + "node_modules/webpack/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/webpack/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/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/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/webpack/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/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/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-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "devOptional": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "devOptional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "devOptional": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/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/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": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "devOptional": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/write-file-atomic/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==", + "devOptional": true + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "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/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "devOptional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "devOptional": true + }, + "node_modules/xmldoc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.3.0.tgz", + "integrity": "sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==", + "dependencies": { + "sax": "^1.2.4" + } + }, + "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/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yahoo-finance2": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-2.11.3.tgz", + "integrity": "sha512-yN4ADFNi2oNYtO79ntbEkSWdVi4KVmGYLwDJ5KV0czxILbAGj4ah6oCBYvMONeHAeDqxtS62zrG8xrHNF/2STw==", + "dependencies": { + "@types/tough-cookie": "^4.0.2", + "ajv": "8.10.0", + "ajv-formats": "2.1.1", + "node-fetch": "^2.6.1", + "tough-cookie": "^4.1.2", + "tough-cookie-file-store": "^2.0.3" + }, + "bin": { + "yahoo-finance": "bin/yahoo-finance.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/yahoo-finance2/node_modules/ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "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/yahoo-finance2/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/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==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/ylru": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "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==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zone.js": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", + "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==" + } + }, + "dependencies": { + "@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "devOptional": true + }, + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@angular-devkit/architect": { + "version": "0.1801.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1801.1.tgz", + "integrity": "sha512-7dIQ++D5PTzLgs4sEvi7pMpG4nY4CTnzLKbqKDI++fJKa7FEpVjje1tsr1r8ap8xD0QXr6sIxmQ4hdLeWwPhDQ==", + "requires": { + "@angular-devkit/core": "18.1.1", + "rxjs": "7.8.1" + }, + "dependencies": { + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@angular-devkit/build-angular": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.1.1.tgz", + "integrity": "sha512-sd/eOzitC8yN9xl/TbbuDxXL1LRZCX3gwKAddV1fJSrXJHEmDM7PhdQbNEPd2O58evMKSiMZK91WnYN0lhTZtw==", + "requires": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1801.1", + "@angular-devkit/build-webpack": "0.1801.1", + "@angular-devkit/core": "18.1.1", + "@angular/build": "18.1.1", + "@babel/core": "7.24.7", + "@babel/generator": "7.24.7", + "@babel/helper-annotate-as-pure": "7.24.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-transform-async-generator-functions": "7.24.7", + "@babel/plugin-transform-async-to-generator": "7.24.7", + "@babel/plugin-transform-runtime": "7.24.7", + "@babel/preset-env": "7.24.7", + "@babel/runtime": "7.24.7", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "18.1.1", + "@vitejs/plugin-basic-ssl": "1.1.0", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.19", + "babel-loader": "9.1.3", + "browserslist": "^4.21.5", + "copy-webpack-plugin": "12.0.2", + "critters": "0.0.24", + "css-loader": "7.1.2", + "esbuild": "0.21.5", + "esbuild-wasm": "0.21.5", + "fast-glob": "3.3.2", + "http-proxy-middleware": "3.0.0", + "https-proxy-agent": "7.0.5", + "istanbul-lib-instrument": "6.0.2", + "jsonc-parser": "3.3.1", + "karma-source-map-support": "1.4.0", + "less": "4.2.0", + "less-loader": "12.2.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.3.1", + "magic-string": "0.30.10", + "mini-css-extract-plugin": "2.9.0", + "mrmime": "2.0.0", + "open": "10.1.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.2", + "piscina": "4.6.1", + "postcss": "8.4.38", + "postcss-loader": "8.1.1", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.77.6", + "sass-loader": "14.2.1", + "semver": "7.6.2", + "source-map-loader": "5.0.0", + "source-map-support": "0.5.21", + "terser": "5.29.2", + "tree-kill": "1.2.2", + "tslib": "2.6.3", + "undici": "6.19.2", + "vite": "5.3.2", + "watchpack": "2.4.1", + "webpack": "5.92.1", + "webpack-dev-middleware": "7.2.1", + "webpack-dev-server": "5.0.4", + "webpack-merge": "5.10.0", + "webpack-subresource-integrity": "5.1.0" + }, + "dependencies": { + "@angular/build": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.1.1.tgz", + "integrity": "sha512-DbgFqpaZE6g8VZaPboB54cVuERlZV6SAkNPEaMT/53cnCxL4QdSQs1aT9Wy8G1Ksr4WI5AZMdPic/TVF0KBGGQ==", + "requires": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1801.1", + "@babel/core": "7.24.7", + "@babel/helper-annotate-as-pure": "7.24.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-syntax-import-attributes": "7.24.7", + "@inquirer/confirm": "3.1.11", + "@vitejs/plugin-basic-ssl": "1.1.0", + "ansi-colors": "4.1.3", + "browserslist": "^4.23.0", + "critters": "0.0.24", + "esbuild": "0.21.5", + "fast-glob": "3.3.2", + "https-proxy-agent": "7.0.5", + "lmdb": "3.0.12", + "magic-string": "0.30.10", + "mrmime": "2.0.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.2", + "piscina": "4.6.1", + "rollup": "4.18.0", + "sass": "1.77.6", + "semver": "7.6.2", + "undici": "6.19.2", + "vite": "5.3.2", + "watchpack": "2.4.1" + } + }, + "@inquirer/confirm": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.11.tgz", + "integrity": "sha512-3wWw10VPxQP279FO4bzWsf8YjIAq7NdwATJ4xS2h1uwsXZu/RmtOVV95rZ7yllS1h/dzu+uLewjMAzNDEj8h2w==", + "requires": { + "@inquirer/core": "^8.2.4", + "@inquirer/type": "^1.3.3" + } + }, + "@inquirer/core": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-8.2.4.tgz", + "integrity": "sha512-7vsXSfxtrrbwMTirfaKwPcjqJy7pzeuF/bP62yo1NQrRJ5HjmMlrhZml/Ljm9ODc1RnbhJlTeSnCkjtFddKjwA==", + "requires": { + "@inquirer/figures": "^1.0.3", + "@inquirer/type": "^1.3.3", + "@types/mute-stream": "^0.0.4", + "@types/node": "^20.14.9", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-spinners": "^2.9.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "picocolors": "^1.0.1", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + } + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "optional": true + }, + "rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "requires": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1801.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1801.1.tgz", + "integrity": "sha512-9qImQciytrf433+h1aAWMD/Qn9cx7amlLtHX9j6ToBMWxY3L9ZKzwlCZ3Q+d6VWs7QrN/X9j8VkJl913yuXeCQ==", + "requires": { + "@angular-devkit/architect": "0.1801.1", + "rxjs": "7.8.1" + }, + "dependencies": { + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@angular-devkit/core": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.1.1.tgz", + "integrity": "sha512-YFzn/+8LezX7ZJhMQisvrqfkxJm6+JOtbWFj8K/luK0rTDmE8Z9n9r6kJ36FnHcLJ5MvvVaBc7n1v1wnzdqXpg==", + "requires": { + "ajv": "8.16.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "dependencies": { + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.1.1.tgz", + "integrity": "sha512-r+DAvVvv+hOuhh19PefPOKa/zDkvzLHz/YOLGq/k1KfJRtNtjCKiDsXp1s6HSzYdJD1H10wnzUIh48uvxfwH5Q==", + "requires": { + "@angular-devkit/core": "18.1.1", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.10", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "dependencies": { + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@angular-eslint/bundled-angular-compiler": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.1.0.tgz", + "integrity": "sha512-2JNlMEnCvLz8q1Qa4sWR9BddtpDWMKYguMzHJKm5zUDwH90CgWHolQlXumtpqbL8r78xd57t35IkbEFLF3UsQw==", + "dev": true + }, + "@angular-eslint/eslint-plugin": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.1.0.tgz", + "integrity": "sha512-rV1RLhcg9TTNE5hB7pMddkJvnH0+q3FnhhWVE+IJNkzlGxEktDwVx7hG17sy8YkRS2CxR0P6Dr5C6wMBdEwAsw==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "18.1.0", + "@angular-eslint/utils": "18.1.0" + } + }, + "@angular-eslint/eslint-plugin-template": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.1.0.tgz", + "integrity": "sha512-k7Zq2JRd4jjg6PB0M24UnnmdhCeRFQ7Q4GlMGmeJLQGan+HFKDBu973yN2/Vmk4RYi+rTVuin0gy4HBeiGiiaw==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "18.1.0", + "@angular-eslint/utils": "18.1.0", + "aria-query": "5.3.0", + "axobject-query": "4.0.0" + } + }, + "@angular-eslint/template-parser": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.1.0.tgz", + "integrity": "sha512-YqBNusbt3vWbm8eo2dICytU8hP8/ez4uETkwKpMvB+H1E0rYaD2F17D47YO9BBFUHCNzAGIBlA8BWDN1kLEMlw==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "18.1.0", + "eslint-scope": "^8.0.0" + } + }, + "@angular-eslint/utils": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.1.0.tgz", + "integrity": "sha512-pTCwbm9TPU1B0fxwhJg5qnJA2ILUJR0cT+rc7kejV0Xwl6RBXpMrzbuMzB9CucEY1au8hAR55I+Sc9znwSwuIw==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "18.1.0" + } + }, + "@angular/animations": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.1.1.tgz", + "integrity": "sha512-3BdB6lB7TT1BQFb8C3XyJ5A9YSrOx951NzcXnzFfTNiq1C+VeR455LtdNiDTPa9Vf5Df1cJb6ReJ1z17ztx+6Q==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/cdk": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.1.1.tgz", + "integrity": "sha512-IaDjvRUgAoKnEeafrnBX+hjTR+1M3O3fV3AybBCjN4NuiPtuyOJiTMg0cTv6RbluJ/SenbT4MQq3tMpOsa9i4w==", + "requires": { + "parse5": "^7.1.2", + "tslib": "^2.3.0" + } + }, + "@angular/cli": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.1.1.tgz", + "integrity": "sha512-sRmc5meBLRQgFKq6te1UM4JPHWPERrg1pjYStft/qRKkOyvgpNzq3Ol6hN3zNb2ds2bAgjKhEAlOwSOZuw1cqQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1801.1", + "@angular-devkit/core": "18.1.1", + "@angular-devkit/schematics": "18.1.1", + "@inquirer/prompts": "5.0.7", + "@listr2/prompt-adapter-inquirer": "2.0.13", + "@schematics/angular": "18.1.1", + "@yarnpkg/lockfile": "1.1.0", + "ini": "4.1.3", + "jsonc-parser": "3.3.1", + "listr2": "8.2.3", + "npm-package-arg": "11.0.2", + "npm-pick-manifest": "9.0.1", + "pacote": "18.0.6", + "resolve": "1.22.8", + "semver": "7.6.2", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + } + }, + "@angular/common": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.1.1.tgz", + "integrity": "sha512-qNfYAapvIi8JyQToSqbg3O5dRXaElv/yNp2evvBGn4UO/liHjdNV/DzgCdyKP7uVbYrR0W3bzj++SxVR3mrATQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.1.1.tgz", + "integrity": "sha512-Nc2GZhXXi3O2otZIWgOJoGZ+88+R6YXGc70dibEpMvmDjKfYpc4pBjuYzaGntdiTYAzVOVTTv09dwTP6YOpPRA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler-cli": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.1.1.tgz", + "integrity": "sha512-TMPrN4HLa5raxW133bY3AxH1Gar36nmy0ikttMeSotLSlC5Y4SCYaiMY7QaPytD1iEGvqAd/rP+YuXzOIuCM/w==", + "requires": { + "@babel/core": "7.24.7", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "dependencies": { + "reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + } + } + }, + "@angular/core": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.1.1.tgz", + "integrity": "sha512-/JFQ49fVIthZzdggl7FOCYAjaynbkRcCyiri85kAyTIvJ6aMSIiEKwJCw45WI5ICf2HtC9kz6dr0OKhMR6SeiA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/forms": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.1.1.tgz", + "integrity": "sha512-CceH57IKeH2Zq8QFFkcJMvBbjxVRCtqzAqSETfShWzrt+ITrz4c6EnUMbj30iz+ntn/R+qGAp3n/t0D7HtTS6Q==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/language-service": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.1.1.tgz", + "integrity": "sha512-SK9mKBB+fWXBXgdDLPZQI/peHqeQLheseSUPhZQyARDR6CrUvhB7MSRWERhn8832fZ6BoCE01p1obsYLWeXNbw==", + "dev": true + }, + "@angular/localize": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-18.1.1.tgz", + "integrity": "sha512-KuUXPWq91XrSsYPvi0tVp+dlG2F+doxXN/FOg+RhUh3X4Qdxy93OWPTMmkWxJ6U9rbXFBKqxfd0+Vnt/BypMmg==", + "devOptional": true, + "requires": { + "@babel/core": "7.24.7", + "@types/babel__core": "7.20.5", + "fast-glob": "3.3.2", + "yargs": "^17.2.1" + } + }, + "@angular/material": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.1.1.tgz", + "integrity": "sha512-9JdUEUZheMMk+Tu8oDLRdI2eXOeI9d2BjEZYkoDif4iB7TCldmcKJyTYXs3kSZz6B53vup/vgKJUPBHLkIDD+A==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/auto-init": "15.0.0-canary.7f224ddd4.0", + "@material/banner": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/card": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/chips": "15.0.0-canary.7f224ddd4.0", + "@material/circular-progress": "15.0.0-canary.7f224ddd4.0", + "@material/data-table": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dialog": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/drawer": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/fab": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/form-field": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/image-list": "15.0.0-canary.7f224ddd4.0", + "@material/layout-grid": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/radio": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/segmented-button": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/slider": "15.0.0-canary.7f224ddd4.0", + "@material/snackbar": "15.0.0-canary.7f224ddd4.0", + "@material/switch": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-bar": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/textfield": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/tooltip": "15.0.0-canary.7f224ddd4.0", + "@material/top-app-bar": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.1.1.tgz", + "integrity": "sha512-9FG2+NSWJXo+zu/W7VQE0UpaWejbV62AXW7218FBZXOdkdID5oNxHf0QdJ3hCaIJw1dKZEG49BTq005d9yQbew==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.1.1.tgz", + "integrity": "sha512-+nnWGLz7dhkRbel8qGIgfQa5PoE4ZMl0ClDw8HR0R5T3w+v0K6trPSjWIPDHm5ex25RvuLNmoUGu29drlHN3Fw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/pwa": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-18.1.1.tgz", + "integrity": "sha512-GFRpjUw1JfYdv+iJ2ImPk4eXpw79hQX/BjF0/hubZh1/LOEVAJnUi4Nyjlj9VqaxJY4/GVTyvE3fppOTnhmRsg==", + "dev": true, + "requires": { + "@angular-devkit/schematics": "18.1.1", + "@schematics/angular": "18.1.1", + "parse5-html-rewriting-stream": "7.0.0" + } + }, + "@angular/router": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.1.1.tgz", + "integrity": "sha512-XaPL+jzmanQa3y9JSMpyxcTqHTNLiGLW6yzcZ0hiKDRpCJ044cKLMK5Ruk84LfzvVDS//tGj46OYAwrPGmBFMg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/service-worker": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-18.1.1.tgz", + "integrity": "sha512-SCSWHns2tIYWs6duCVWOmQIOf6fVrqObkZ8ajpQ42vBLawpSgJsSew6E1yquMO6UDi/lph6ZRdTr5Vqt7CiboQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "requires": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==" + }, + "@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "requires": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "requires": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "requires": { + "@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" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "requires": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + } + }, + "@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "requires": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "requires": { + "@babel/types": "^7.24.7" + } + }, + "@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==" + }, + "@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" + }, + "@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==" + }, + "@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "requires": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + } + }, + "@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "requires": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + } + }, + "@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "requires": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "@babel/parser": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "requires": { + "@babel/types": "^7.25.4" + } + }, + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + } + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "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.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz", + "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-decorators": "^7.24.1" + } + }, + "@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==", + "requires": {} + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", + "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", + "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@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==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "requires": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "requires": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz", + "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-flow": "^7.24.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "requires": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "requires": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "requires": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "requires": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "requires": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "requires": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", + "requires": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz", + "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/plugin-syntax-typescript": "^7.24.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "requires": { + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" + } + }, + "@babel/preset-env": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", + "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", + "requires": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.7", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.7", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.7", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/preset-flow": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz", + "integrity": "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-flow-strip-types": "^7.24.7" + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" + } + }, + "@babel/register": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", + "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "@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==" + }, + "@babel/runtime": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + } + }, + "@babel/traverse": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", + "requires": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.25.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", + "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", + "requires": { + "@babel/types": "^7.25.4", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + } + } + }, + "@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "requires": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "devOptional": true + }, + "@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", + "optional": true + }, + "@codewithdan/observable-store": { + "version": "2.2.15", + "resolved": "https://registry.npmjs.org/@codewithdan/observable-store/-/observable-store-2.2.15.tgz", + "integrity": "sha512-LVCSMZzTCvoDo5n7YDmtIIEhTmvJ8O21k36Vwu/A4kumdXQ1YVs4sKoSK3vlINZPL4AYY2MRsBVtvre4QIETFw==", + "requires": {} + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@cypress/listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "@cypress/request": { + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.10.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz", + "integrity": "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "@dfinity/agent": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.15.7.tgz", + "integrity": "sha512-w34yvlUTpPBG8nLOD0t/ao3k2xonOFq4QGvfJ1HiS/nIggdza/3xC3nLBszGrjVYWj1jqu8BLFvQXCAeWin75A==", + "requires": { + "base64-arraybuffer": "^0.2.0", + "bignumber.js": "^9.0.0", + "borc": "^2.1.1", + "js-sha256": "0.9.0", + "simple-cbor": "^0.4.1", + "ts-node": "^10.8.2" + } + }, + "@dfinity/auth-client": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.15.7.tgz", + "integrity": "sha512-f6cRqXayCf+7+9gNcDnAZZwJrgBYKIzfxjxeRLlpsueQeo+E/BX2yVSANxzTkCNc4U3p+ttHI1RNtasLunYTcA==", + "requires": { + "idb": "^7.0.2" + } + }, + "@dfinity/candid": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-0.15.7.tgz", + "integrity": "sha512-lTcjK/xrSyT7wvUQ2pApG+yklQAwxaofQ04D1IWv0/8gKbY0eUbh8G2w6+CypJ15Hb1CH24ijUj8nWdeX/z3jg==", + "requires": { + "ts-node": "^10.8.2" + } + }, + "@dfinity/identity": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/identity/-/identity-0.15.7.tgz", + "integrity": "sha512-kBAkx9wq78jSQf6T5aayLyWm8YgtOZw8bW6+OuzX6tR3hkAEa85A9TcKA7BjkmMWSIskjEDVQub4fFfKWS2vOQ==", + "requires": { + "borc": "^2.1.1", + "js-sha256": "^0.9.0", + "tweetnacl": "^1.0.1" + } + }, + "@dfinity/principal": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.15.7.tgz", + "integrity": "sha512-6/AkYzpGEH6Jw/0+B/EeeQn+5u2GDDvRLt1kQPhIG4txQYFnOy04H3VvyrymmfAj6/CXUgrOrux6OxgYSLYVJg==", + "requires": { + "js-sha256": "^0.9.0", + "ts-node": "^10.8.2" + } + }, + "@dinero.js/currencies": { + "version": "2.0.0-alpha.8", + "resolved": "https://registry.npmjs.org/@dinero.js/currencies/-/currencies-2.0.0-alpha.8.tgz", + "integrity": "sha512-zApiqtuuPwjiM9LJA5/kNcT48VSHRiz2/mktkXjIpfxrJKzthXybUAgEenExIH6dYhLDgVmsLQZtZFOsdYl0Ag==" + }, + "@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==" + }, + "@emnapi/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz", + "integrity": "sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==", + "dev": true, + "requires": { + "@emnapi/wasi-threads": "1.0.1", + "tslib": "^2.4.0" + } + }, + "@emnapi/runtime": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@emnapi/wasi-threads": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", + "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true + }, + "@hexagon/base64": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", + "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==" + }, + "@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "@inquirer/checkbox": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.4.7.tgz", + "integrity": "sha512-5YwCySyV1UEgqzz34gNsC38eKxRBtlRDpJLlKcRtTjlYA/yDKuc1rfw+hjw+2WJxbAZtaDPsRl5Zk7J14SBoBw==", + "dev": true, + "requires": { + "@inquirer/core": "^9.0.10", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.2", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/confirm": { + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.22.tgz", + "integrity": "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==", + "dev": true, + "requires": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2" + } + }, + "@inquirer/core": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.0.10.tgz", + "integrity": "sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA==", + "dev": true, + "requires": { + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.2", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.1.0", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-spinners": "^2.9.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "dependencies": { + "@types/node": { + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", + "dev": true, + "requires": { + "undici-types": "~6.19.2" + } + }, + "undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + } + } + }, + "@inquirer/editor": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-2.1.22.tgz", + "integrity": "sha512-K1QwTu7GCK+nKOVRBp5HY9jt3DXOfPGPr6WRDrPImkcJRelG9UTx2cAtK1liXmibRrzJlTWOwqgWT3k2XnS62w==", + "dev": true, + "requires": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2", + "external-editor": "^3.1.0" + } + }, + "@inquirer/expand": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-2.1.22.tgz", + "integrity": "sha512-wTZOBkzH+ItPuZ3ZPa9lynBsdMp6kQ9zbjVPYEtSBG7UulGjg2kQiAnUjgyG4SlntpTce5bOmXAPvE4sguXjpA==", + "dev": true, + "requires": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/figures": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz", + "integrity": "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==" + }, + "@inquirer/input": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.2.9.tgz", + "integrity": "sha512-7Z6N+uzkWM7+xsE+3rJdhdG/+mQgejOVqspoW+w0AbSZnL6nq5tGMEVASaYVWbkoSzecABWwmludO2evU3d31g==", + "dev": true, + "requires": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2" + } + }, + "@inquirer/password": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-2.1.22.tgz", + "integrity": "sha512-5Fxt1L9vh3rAKqjYwqsjU4DZsEvY/2Gll+QkqR4yEpy6wvzLxdSgFhUcxfDAOtO4BEoTreWoznC0phagwLU5Kw==", + "dev": true, + "requires": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2", + "ansi-escapes": "^4.3.2" + } + }, + "@inquirer/prompts": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.0.7.tgz", + "integrity": "sha512-GFcigCxJTKCH3aECzMIu4FhgLJWnFvMXzpI4CCSoELWFtkOOU2P+goYA61+OKpGrB8fPE7q6n8zAXBSlZRrHjQ==", + "dev": true, + "requires": { + "@inquirer/checkbox": "^2.3.7", + "@inquirer/confirm": "^3.1.11", + "@inquirer/editor": "^2.1.11", + "@inquirer/expand": "^2.1.11", + "@inquirer/input": "^2.1.11", + "@inquirer/password": "^2.1.11", + "@inquirer/rawlist": "^2.1.11", + "@inquirer/select": "^2.3.7" + } + }, + "@inquirer/rawlist": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.2.4.tgz", + "integrity": "sha512-pb6w9pWrm7EfnYDgQObOurh2d2YH07+eDo3xQBsNAM2GRhliz6wFXGi1thKQ4bN6B0xDd6C3tBsjdr3obsCl3Q==", + "dev": true, + "requires": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/select": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.4.7.tgz", + "integrity": "sha512-JH7XqPEkBpNWp3gPCqWqY8ECbyMoFcCZANlL6pV9hf59qK6dGmkOlx1ydyhY+KZ0c5X74+W6Mtp+nm2QX0/MAQ==", + "dev": true, + "requires": { + "@inquirer/core": "^9.0.10", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.2", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + } + }, + "@inquirer/type": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.2.tgz", + "integrity": "sha512-w9qFkumYDCNyDZmNQjf/n6qQuvQ4dMC3BJesY4oF+yr0CxR5vxujflAVeIcS6U336uzi9GM0kAfZlLrZ9UTkpA==", + "requires": { + "mute-stream": "^1.0.0" + } + }, + "@internationalized/number": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.2.tgz", + "integrity": "sha512-4FGHTi0rOEX1giSkt5MH4/te0eHBq3cvAYsfLlpguV6pzJAReXymiYpE5wPCqKqjkUO3PIsyvk+tBiIV1pZtbA==", + "requires": { + "@swc/helpers": "^0.5.0" + } + }, + "@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "devOptional": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "devOptional": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "devOptional": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "devOptional": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "devOptional": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + }, + "@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "devOptional": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "devOptional": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "devOptional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "devOptional": true, + "requires": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "devOptional": true, + "requires": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + } + }, + "@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "devOptional": true, + "requires": { + "jest-get-type": "^29.6.3" + } + }, + "@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "devOptional": true, + "requires": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "devOptional": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + } + }, + "@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "devOptional": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "devOptional": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "devOptional": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "devOptional": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "devOptional": true, + "requires": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "devOptional": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "devOptional": true, + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@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==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "requires": {} + }, + "@jsonjoy.com/json-pack": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", + "requires": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + } + }, + "@jsonjoy.com/util": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.3.0.tgz", + "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==", + "requires": {} + }, + "@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + }, + "@levischuck/tiny-cbor": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz", + "integrity": "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==" + }, + "@listr2/prompt-adapter-inquirer": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.13.tgz", + "integrity": "sha512-nAl6teTt7EWSjttNavAnv3uFR3w3vPP3OTYmHyPNHzKhAj2NoBDHmbS3MGpvvO8KXXPASnHjEGrrKrdKTMKPnQ==", + "dev": true, + "requires": { + "@inquirer/type": "^1.3.3" + } + }, + "@lmdb/lmdb-darwin-arm64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.0.12.tgz", + "integrity": "sha512-vgTwzNUD3Hy4aqtGhX2+nV/usI0mwy3hDRuTjs8VcK0BLiMVEpNQXgzwlWEgPmA8AAPloUgyOs2nK5clJF5oIg==", + "optional": true + }, + "@lmdb/lmdb-darwin-x64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.0.12.tgz", + "integrity": "sha512-qOt0hAhj2ZLY6aEWu85rzt5zcyCAQITMhCMEPNlo1tuYekpVAdkQNiwXxEkCjBYvwTskvXuwXOOUpjuSc+aJnA==", + "optional": true + }, + "@lmdb/lmdb-linux-arm": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.0.12.tgz", + "integrity": "sha512-Ggd/UXpE+alMncbELCXA3OKpDj9bDBR3qVO7WRTxstloDglRAHfZmUJgTkeaNKjFO1JHqS7AKy0jba9XebZB1w==", + "optional": true + }, + "@lmdb/lmdb-linux-arm64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.0.12.tgz", + "integrity": "sha512-Qy4cFXFe9h1wAWMsojex8x1ifvw2kqiZv686YiRTdQEzAfc3vJASHFcD/QejHUCx7YHMYdnUoCS45rG2AiGDTQ==", + "optional": true + }, + "@lmdb/lmdb-linux-x64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.0.12.tgz", + "integrity": "sha512-c+noT9IofktxktFllKHFmci8ka2SYGSLN17pj/KSl1hg7mmfAiGp4xxFxEwMLTb+SX95vP1DFiR++1I3WLVxvA==", + "optional": true + }, + "@lmdb/lmdb-win32-x64": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.12.tgz", + "integrity": "sha512-CO3MFV8gUx16NU/CyyuumAKblESwvoGVA2XhQKZ976OTOxaTbb8F8D3f0iiZ4MYqsN74jIrFuCmXpPnpjbhfOQ==", + "optional": true + }, + "@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==" + }, + "@material/animation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/auto-init": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/banner": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/base": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", + "requires": { + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/card": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", + "requires": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/checkbox": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/chips": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "@material/circular-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/data-table": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/density": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/dialog": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/dom": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/drawer": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/elevation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/fab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/feature-targeting": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/floating-label": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/focus-ring": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", + "requires": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0" + } + }, + "@material/form-field": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/icon-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/image-list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/layout-grid": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/line-ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/linear-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/menu": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/menu-surface": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/notched-outline": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/progress-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/radio": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/rtl": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", + "requires": { + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/segmented-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/select": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/shape": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/slider": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/snackbar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/switch": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "@material/tab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-scroller": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/textfield": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/theme": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/tokens": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", + "requires": { + "@material/elevation": "15.0.0-canary.7f224ddd4.0" + } + }, + "@material/tooltip": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "@material/top-app-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", + "requires": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/touch-target": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", + "requires": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@material/typography": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", + "requires": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "@mdx-js/react": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", + "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", + "dev": true, + "requires": { + "@types/mdx": "^2.0.0" + } + }, + "@module-federation/bridge-react-webpack-plugin": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.2.8.tgz", + "integrity": "sha512-6G1qTo1HWvRcN5fzE+SZgvgzSPoq5YqNx8hFL8BttJmnd3wj4SUOFiikAsXhdVrzSK+Zuzg6pipkiLH1m+pbtw==", + "dev": true, + "requires": { + "@module-federation/sdk": "0.2.8" + } + }, + "@module-federation/dts-plugin": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.2.8.tgz", + "integrity": "sha512-qY1Wbqo0yu9nh6KR8K19t5T4tYtlUbmcNdcaCweISCyAbH99TrhpQkJ89NY0TLtnxQ6uayIYayqAWS7vzyDXVw==", + "dev": true, + "requires": { + "@module-federation/managers": "0.2.8", + "@module-federation/sdk": "0.2.8", + "@module-federation/third-party-dts-extractor": "0.2.8", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.6.7", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "2.11.0", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.17.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@module-federation/enhanced": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.2.8.tgz", + "integrity": "sha512-6fGM/GiKw6LZiBe6DF8Petz6ih/Yyf3q2htLrx+hrWoDWfWEoWlLvoCUsVkY2UgMCLKid7Fm3Auc4w8A4aRjvQ==", + "dev": true, + "requires": { + "@module-federation/bridge-react-webpack-plugin": "0.2.8", + "@module-federation/dts-plugin": "0.2.8", + "@module-federation/managers": "0.2.8", + "@module-federation/manifest": "0.2.8", + "@module-federation/rspack": "0.2.8", + "@module-federation/runtime-tools": "0.2.8", + "@module-federation/sdk": "0.2.8", + "btoa": "^1.2.1", + "upath": "2.0.1" + } + }, + "@module-federation/managers": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.2.8.tgz", + "integrity": "sha512-S5GXqt2Vrs1+uNXHw7UzZ7m3fs8H3nxNsNGQ0j5+HiT5yA7uRTY1AZJZCGAHzG6XImJ1DzL/SW1acM2Hwj0aAw==", + "dev": true, + "requires": { + "@module-federation/sdk": "0.2.8", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" + } + }, + "@module-federation/manifest": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.2.8.tgz", + "integrity": "sha512-kw4PeAldkOuGCWfCnDzZwPHUx5qv9+WztY5+TEbsgXc5E+/e2NDA6Gg3eT8zUGeexeGdab3f+DuN9ZClZJYVGA==", + "dev": true, + "requires": { + "@module-federation/dts-plugin": "0.2.8", + "@module-federation/managers": "0.2.8", + "@module-federation/sdk": "0.2.8", + "chalk": "3.0.0", + "find-pkg": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@module-federation/rspack": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.2.8.tgz", + "integrity": "sha512-5Bofm3cY7OOwO2DT5TevITd+HAA03zsY1wwsMb1BP6NkS/ukUtsjuRo2Anua0RkHBEIx+Dv5rpqOn7qSlOm1Fg==", + "dev": true, + "requires": { + "@module-federation/bridge-react-webpack-plugin": "0.2.8", + "@module-federation/dts-plugin": "0.2.8", + "@module-federation/managers": "0.2.8", + "@module-federation/manifest": "0.2.8", + "@module-federation/runtime-tools": "0.2.8", + "@module-federation/sdk": "0.2.8" + } + }, + "@module-federation/runtime": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.2.8.tgz", + "integrity": "sha512-8xmA/+z1zD09F5qU8VnSWLExqTCVWoHOguXsCX79kkqp7i0c+D2YaebWzlQ2kku+DU+0VIzXpQ3BBcumZ3v3wQ==", + "dev": true, + "requires": { + "@module-federation/sdk": "0.2.8" + } + }, + "@module-federation/runtime-tools": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.2.8.tgz", + "integrity": "sha512-RSNtyhcNvnTQIdzRUIOGue6WQA/9mL9cY/n0dEd357L/lmLCvfHiZbowlkacckDzyApariUHxzkHrU2Q6kzoew==", + "dev": true, + "requires": { + "@module-federation/runtime": "0.2.8", + "@module-federation/webpack-bundler-runtime": "0.2.8" + } + }, + "@module-federation/sdk": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.2.8.tgz", + "integrity": "sha512-eGMnJxdRDgt6dtMv8gkAlzEbTPWVHb3AHUNUG0w56wcbIF0RHC6kmvpHpSQyq4DVGWv3U4g/ZiH5BvBlqEelDQ==", + "dev": true + }, + "@module-federation/third-party-dts-extractor": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.2.8.tgz", + "integrity": "sha512-VGXvdsRlljbFUfGeA448CxR7i6fLWJN07ViRuNXYYXc19e4bQVhBHzrf7eCv9ahcf/tA/8YYCS2h11ixbD691A==", + "dev": true, + "requires": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" + } + }, + "@module-federation/webpack-bundler-runtime": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.2.8.tgz", + "integrity": "sha512-tiW1kD/V3QNul1/O3Y3lwQv/r4sUU4jvWZykrLvHYt2vuoGe1d4tHnSIFEVEAi9FSpuDwdRK2+NaWBr92gIS7Q==", + "dev": true, + "requires": { + "@module-federation/runtime": "0.2.8", + "@module-federation/sdk": "0.2.8" + } + }, + "@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz", + "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz", + "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz", + "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz", + "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz", + "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==", + "optional": true + }, + "@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz", + "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==", + "optional": true + }, + "@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "dev": true, + "requires": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" + } + }, + "@nestjs/bull": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-10.0.1.tgz", + "integrity": "sha512-1GcJ8BkHDgQdBMZ7SqAqgUHiFnISXmpGvewFeTc8wf87JLk2PweiKv9j9/KQKU+NI237pCe82XB0bXzTnsdxSw==", + "requires": { + "@nestjs/bull-shared": "^10.0.1", + "tslib": "2.6.0" + } + }, + "@nestjs/bull-shared": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-10.1.1.tgz", + "integrity": "sha512-su7eThDrSz1oQagEi8l+1CyZ7N6nMgmyAX0DuZoXqT1KEVEDqGX7x80RlPVF60m/8SYOskckGMjJROSfNQcErw==", + "requires": { + "tslib": "2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@nestjs/cache-manager": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-2.1.0.tgz", + "integrity": "sha512-9kep3a8Mq5cMuXN/anGhSYc0P48CRBXk5wyJJRBFxhNkCH8AIzZF4CASGVDIEMmm3OjVcEUHojjyJwCODS17Qw==", + "requires": {} + }, + "@nestjs/common": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.1.3.tgz", + "integrity": "sha512-xSyXBwgcmiFwQqek1Urw/AL3pRPq9bp/tpgfTxmnJg3gP6XNUbx1fDr0de50irXgZYzFKfVFo9ptC3b2du5YKA==", + "requires": { + "iterare": "1.2.1", + "tslib": "2.6.1", + "uid": "2.0.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@nestjs/config": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.0.0.tgz", + "integrity": "sha512-fzASk1Uv6AjdE6uA1na8zpqRCXAhRpcfgpCVv3SAKlgJ3VR3bEjcI4G17WHLgLBsmPzI1ofdkSI451WLD1F1Rw==", + "requires": { + "dotenv": "16.1.4", + "dotenv-expand": "10.0.0", + "lodash": "4.17.21", + "uuid": "9.0.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + } + } + }, + "@nestjs/core": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.1.3.tgz", + "integrity": "sha512-VzK54TuacC3Vmq3b5xTyMVTlDNJeKbjpKfV9fNqm4TbIBm8ZPo3FC0osJAbAK4XwbVvv2Flq1yA3CutasupVjw==", + "requires": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "3.2.0", + "tslib": "2.6.1", + "uid": "2.0.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@nestjs/event-emitter": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.0.4.tgz", + "integrity": "sha512-quMiw8yOwoSul0pp3mOonGz8EyXWHSBTqBy8B0TbYYgpnG1Ix2wGUnuTksLWaaBiiOTDhciaZ41Y5fJZsSJE1Q==", + "requires": { + "eventemitter2": "6.4.9" + } + }, + "@nestjs/jwt": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.1.0.tgz", + "integrity": "sha512-iLwCGS25ybUxGS7i5j/Mwuyzvp/WxJftHlm8aLEBv5GV92apz6L1QVjxLdZrqXbzo++C8gdJauhzil8qitY+6w==", + "requires": { + "@types/jsonwebtoken": "9.0.2", + "jsonwebtoken": "9.0.0" + } + }, + "@nestjs/passport": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/passport/-/passport-10.0.3.tgz", + "integrity": "sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==", + "requires": {} + }, + "@nestjs/platform-express": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.1.3.tgz", + "integrity": "sha512-RSf7ooCrxiWJlWl3CLfpaYmAf3U0tRsN7pJakujWdvzVJU2EzVZTLcy1MtnSg/HBm9/Rvg98VI5QI6oOhOpt+A==", + "requires": { + "body-parser": "1.20.2", + "cors": "2.8.5", + "express": "4.18.2", + "multer": "1.4.4-lts.1", + "tslib": "2.6.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + } + } + }, + "@nestjs/schedule": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-3.0.2.tgz", + "integrity": "sha512-INhpzkyquosLbVrXx4v+rfAnomwBTgKQvs7e9BZ2LSZdWQOqCQD2PmvWDiu8c4wdJIH6wcWQh98w5KxIcKuVBA==", + "requires": { + "cron": "2.4.0", + "uuid": "9.0.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + } + } + }, + "@nestjs/schematics": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.1.tgz", + "integrity": "sha512-buxpYtSwOmWyf0nUJWJCkCkYITwbOfIEKHTnGS7sDbcfaajrOFXb5pPAGD2E1CUb3C1+NkQIURPKzs0IouZTQg==", + "dev": true, + "requires": { + "@angular-devkit/core": "16.1.0", + "@angular-devkit/schematics": "16.1.0", + "comment-json": "4.2.3", + "jsonc-parser": "3.2.0", + "pluralize": "8.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.0.tgz", + "integrity": "sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q==", + "dev": true, + "requires": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + } + }, + "@angular-devkit/schematics": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.0.tgz", + "integrity": "sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A==", + "dev": true, + "requires": { + "@angular-devkit/core": "16.1.0", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + } + }, + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@nestjs/serve-static": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-4.0.0.tgz", + "integrity": "sha512-8cTrNV2ngdHIjiLNsXePnw0+KY1ThrZGz/WeyAG5gIvmZNDbnZBOrPoYlKL+MOzlXlQStxR5jKLYmn+nJeoncQ==", + "requires": { + "path-to-regexp": "0.2.5" + }, + "dependencies": { + "path-to-regexp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.2.5.tgz", + "integrity": "sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q==" + } + } + }, + "@nestjs/testing": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.1.3.tgz", + "integrity": "sha512-zMrO9xLPYnKtC6q1diWubuMshIp0v2aGHa58jcIfZaAlJlU/6RKsgCOiFQ42aFzxUEBRWF0LBF0aiwt04LKMyQ==", + "dev": true, + "requires": { + "tslib": "2.6.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + } + } + }, + "@ngtools/webpack": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.1.1.tgz", + "integrity": "sha512-mjlfnWcHtBZJUJaVyffJZZL8U1o1XUQwrFIKeiFUeatLDsjtv8EbLW9Ed1v3eAJyVuaTNKpsdZma1XdxzeLONw==", + "requires": {} + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "dependencies": { + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true + } + } + }, + "@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz", + "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + }, + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "requires": { + "isexe": "^3.1.1" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dev": true, + "requires": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true + }, + "@npmcli/package-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", + "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "dev": true, + "requires": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "dependencies": { + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + } + } + }, + "@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dev": true, + "requires": { + "which": "^4.0.0" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "requires": { + "isexe": "^3.1.1" + } + } + } + }, + "@npmcli/redact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", + "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", + "dev": true + }, + "@npmcli/run-script": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", + "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "requires": { + "isexe": "^3.1.1" + } + } + } + }, + "@nrwl/angular": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/angular/-/angular-19.5.6.tgz", + "integrity": "sha512-ilS6ZjsEOToeTiKHixd9+wLvslUZ1cdvNIgvsUZ3VHK4OmGxTzGJXaV+1+CSgYDpSp4+MC/Di8EfzUteCn9mFw==", + "dev": true, + "requires": { + "@nx/angular": "19.5.6", + "tslib": "^2.3.0" + } + }, + "@nrwl/cypress": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/cypress/-/cypress-19.5.6.tgz", + "integrity": "sha512-yVMSVjDcOdqiiJjHaHme/3FtyFgT4mK7+GZExoJzGevHDrReeN22a2+3W7Rr/cEi/qTDdnNfODn5QdSpWfbuLQ==", + "dev": true, + "requires": { + "@nx/cypress": "19.5.6" + } + }, + "@nrwl/devkit": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.5.6.tgz", + "integrity": "sha512-H7LGlwAktfL2GR4scwCfehuppmzcHJJt4C2PpiGEsfA74MKBw2/VGX15b29Mf36XbGS+Bx9vjvooZEt5HPCusw==", + "dev": true, + "requires": { + "@nx/devkit": "19.5.6" + } + }, + "@nrwl/eslint-plugin-nx": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.5.6.tgz", + "integrity": "sha512-pHIJHXOVJRC+wBI9zK0RnwKAh7NC9TKCdIm5KsYNFHTLswUxHnxzmP86hKTVcZO7o10NeYzBWD7QAQvqYgIQoA==", + "dev": true, + "requires": { + "@nx/eslint-plugin": "19.5.6" + } + }, + "@nrwl/jest": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.5.6.tgz", + "integrity": "sha512-/redyU+er4f0xjLgWttdyOZw0yOozGzwDuUWYu0vR9SCmKXyhQf3kUHw6yR3/qOLiN32VbzAmiq67NvGhoRgFw==", + "dev": true, + "requires": { + "@nx/jest": "19.5.6" + } + }, + "@nrwl/js": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.5.6.tgz", + "integrity": "sha512-mfTBvon1v/Ts1Crvv25raXGxpQe3cgPTNCP+D5SG6Vpe/vbLOYiBi90UhHIKXKZOQ73RRx+Wojgn+Zv5pDo13A==", + "dev": true, + "requires": { + "@nx/js": "19.5.6" + } + }, + "@nrwl/nest": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/nest/-/nest-19.5.6.tgz", + "integrity": "sha512-TPI2eD0JotnAvd3ynnrNiToVRTabjjqabU+JDnH2qrI2GnDwotbazJLxDQTlI62ev2sqs9lw3iMbn1jwJDy5UQ==", + "dev": true, + "requires": { + "@nx/nest": "19.5.6" + } + }, + "@nrwl/node": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/node/-/node-19.5.6.tgz", + "integrity": "sha512-eiQqeHNtR40cdD0WX33ZUwom3Malt7C7zq+iU5DTLlbeC6ciZGz9pYkeNZ6JJZOEPEUGM5O+7gtWUb+Ig7ZyMQ==", + "dev": true, + "requires": { + "@nx/node": "19.5.6" + } + }, + "@nrwl/storybook": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/storybook/-/storybook-19.5.6.tgz", + "integrity": "sha512-xEAnwp16NKBXZ8nqXFiFjJFFc8SzWY+oRoXQTkR7mUV7kKnaeFK2mBq2JXygyRonRdrBjZIvsM7YzRRl3brlJQ==", + "dev": true, + "requires": { + "@nx/storybook": "19.5.6" + } + }, + "@nrwl/tao": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.5.6.tgz", + "integrity": "sha512-p1bxEjW32bIHAiTp+PVdJpa2V9En2s9FigepHXyvmT2Aipisz96CKiDjexhPTjOZHUKtqA9FgmOIuVl3sBME3g==", + "dev": true, + "requires": { + "nx": "19.5.6", + "tslib": "^2.3.0" + } + }, + "@nrwl/web": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.5.6.tgz", + "integrity": "sha512-2TJB0zSBjDtl2AaZToTvSLej4ed5YO5nJ9iFsv764WDLI0D/WsciUiZHNdXSIhU0lf2yrs7CmIYZFWAdnXzxKA==", + "dev": true, + "requires": { + "@nx/web": "19.5.6" + } + }, + "@nrwl/webpack": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/webpack/-/webpack-19.5.6.tgz", + "integrity": "sha512-2tHi4QKDAjs9f7lzoELmzh5D1aT+XOn6PTK47V4n+Y878HgRQuv9NMRd7WhH5nAAlOKQYonsTc9e4doEJ6T9aQ==", + "dev": true, + "requires": { + "@nx/webpack": "19.5.6" + } + }, + "@nrwl/workspace": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.5.6.tgz", + "integrity": "sha512-k0Pria840szB3dIDCXOMbD4jbnaLCeGRYthE5duG5nPxTCbeMMu7pU1t0sv9IgpQZ/JrHeWliknWgaTlIguPug==", + "dev": true, + "requires": { + "@nx/workspace": "19.5.6" + } + }, + "@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nx/angular": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-19.5.6.tgz", + "integrity": "sha512-86fZmTx7Omo7FJuRyuNvEiUHUSuwEaGFeh/UkWt3Crf5C0pAlPYzpcm3B7B7e0RwGiWII9Mc9ZLwnPTv4jgZdA==", + "dev": true, + "requires": { + "@module-federation/enhanced": "~0.2.3", + "@nrwl/angular": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/js": "19.5.6", + "@nx/web": "19.5.6", + "@nx/webpack": "19.5.6", + "@nx/workspace": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "@typescript-eslint/type-utils": "^7.16.0", + "chalk": "^4.1.0", + "find-cache-dir": "^3.3.2", + "magic-string": "~0.30.2", + "minimatch": "9.0.3", + "piscina": "^4.4.0", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "webpack": "^5.88.0", + "webpack-merge": "^5.8.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nx/cypress": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-19.5.6.tgz", + "integrity": "sha512-3yUZ0AR5e9Ea7vk/6Zjje1QHyPXGycdnWOzOZuOJ6Wloeqj/EWWGoIEsSt+XAfzCiK/oWnlXpsbkrGJZYYgbdQ==", + "dev": true, + "requires": { + "@nrwl/cypress": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/js": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "detect-port": "^1.5.1", + "tslib": "^2.3.0" + } + }, + "@nx/devkit": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.5.6.tgz", + "integrity": "sha512-zSToXLkhbAOQmqVTgUNHdLO0uOZz/iGwqEK4tuAhU5hhqTcpN1TZUI9BlINvtFJBLvbNroGrnIh0gTq9CPzVHw==", + "dev": true, + "requires": { + "@nrwl/devkit": "19.5.6", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "minimatch": "9.0.3", + "semver": "^7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } + }, + "@nx/eslint": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.5.6.tgz", + "integrity": "sha512-WLUo4f+ndMVWZ5QqqZiZNCmbLCqEqPBopvGWJg6uUJyrm5HiFsks+1nRp7BxFzj0SwmdmSRzQFvMgorw7lAgCQ==", + "dev": true, + "requires": { + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "@nx/linter": "19.5.6", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "typescript": "~5.4.2" + }, + "dependencies": { + "typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true + } + } + }, + "@nx/eslint-plugin": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.5.6.tgz", + "integrity": "sha512-5yZJbAoS35blBvY1riAxzemBGJJJW36FVm304ccPyJXvXA7Wa7yMbtwuVagJ9E7w4fodmCcWOAvrCDUTSakBug==", + "dev": true, + "requires": { + "@nrwl/eslint-plugin-nx": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "@typescript-eslint/type-utils": "^7.16.0", + "@typescript-eslint/utils": "^7.16.0", + "chalk": "^4.1.0", + "confusing-browser-globals": "^1.0.9", + "jsonc-eslint-parser": "^2.1.0", + "semver": "^7.5.3", + "tslib": "^2.3.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + } + }, + "@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nx/jest": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.5.6.tgz", + "integrity": "sha512-UkGEl7iAt3MEz+BB4Xp3u641LrMeOytTcbljjyYtR84YtJaYgc8CFmornnw8KVqfavQS+v/nrv8lMbbYQHkWpQ==", + "dev": true, + "requires": { + "@jest/reporters": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@nrwl/jest": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "chalk": "^4.1.0", + "identity-obj-proxy": "3.0.0", + "jest-config": "^29.4.1", + "jest-resolve": "^29.4.1", + "jest-util": "^29.4.1", + "minimatch": "9.0.3", + "resolve.exports": "1.1.0", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nx/js": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.5.6.tgz", + "integrity": "sha512-NNf6Zh4Z8k3dmkXkCUYrReH9ZpdAhvUQjwrWUHtmc5MnWTsQL12a01MwbMi4ReMzDLDjffDXjJFxYmbNYKaRzw==", + "dev": true, + "requires": { + "@babel/core": "^7.23.2", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/workspace": "19.5.6", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "9.0.3", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "^7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + } + } + }, + "@nx/linter": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.5.6.tgz", + "integrity": "sha512-OS0DZ1TDTvWaZe7ijLT6jkQZCCBg4OseFmP2Y6bqE/oRdyoRv95gCT2MGmyJQXkLoX5j9DMfc4nYXS0VHFYqdg==", + "dev": true, + "requires": { + "@nx/eslint": "19.5.6" + } + }, + "@nx/nest": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-19.5.6.tgz", + "integrity": "sha512-cIr27QlF3RBb0NhCxJGipQt2uwgERLMJ0nqJhlkbBFlmZsZiFEQ33V89hgGAdPTB3ntEKmubKws0ZySn2hdrCQ==", + "dev": true, + "requires": { + "@nestjs/schematics": "^9.1.0", + "@nrwl/nest": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/js": "19.5.6", + "@nx/node": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "tslib": "^2.3.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.0.1.tgz", + "integrity": "sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==", + "dev": true, + "requires": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + } + }, + "@angular-devkit/schematics": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.0.1.tgz", + "integrity": "sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==", + "dev": true, + "requires": { + "@angular-devkit/core": "16.0.1", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + } + }, + "@nestjs/schematics": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.2.0.tgz", + "integrity": "sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==", + "dev": true, + "requires": { + "@angular-devkit/core": "16.0.1", + "@angular-devkit/schematics": "16.0.1", + "jsonc-parser": "3.2.0", + "pluralize": "8.0.0" + } + }, + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "@nx/node": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/node/-/node-19.5.6.tgz", + "integrity": "sha512-nWWoZCdomYOo0JmJMiP1UWlAnCdrvqLxXgWS6MNbQTT0rhJSn6em5S9N4TuHA7+aCDInvzNEL8YcVTm1xCbtug==", + "dev": true, + "requires": { + "@nrwl/node": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/jest": "19.5.6", + "@nx/js": "19.5.6", + "tslib": "^2.3.0" + } + }, + "@nx/nx-darwin-arm64": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.5.6.tgz", + "integrity": "sha512-evEpUq571PQkhaLBR7ul5iqE2l97QS7Q37/rxoBuwJzyQ/QKHfNu5t032bR3KLyEOrv7golT10jMeoQlNeF7eQ==", + "dev": true, + "optional": true + }, + "@nx/nx-darwin-x64": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.5.6.tgz", + "integrity": "sha512-o1tu0dOW7TZ80VN9N11FQL/3gHd1+t6NqtEmRClN0/sAh2MZyiBdbXv7UeN5HoKE7HAusiVFIxK3c1lxOvFtsQ==", + "dev": true, + "optional": true + }, + "@nx/nx-freebsd-x64": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.5.6.tgz", + "integrity": "sha512-IUL0ROGpLUol9cuVJ7VeUvaB/ptxg7DOjMef1+LJeOgxl/SFNa0bj0kKpA/AQwujz6cLI7Ei7xLTVQOboNh1DA==", + "dev": true, + "optional": true + }, + "@nx/nx-linux-arm-gnueabihf": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.5.6.tgz", + "integrity": "sha512-TGf1+cpWg5QiPEGW5kgxa1fVNyASMuqu+LvQ9CKhNYNz5EPD15yr/k6C0tOjgSXro3wi8TikTeG0Ln2hpmn6pw==", + "dev": true, + "optional": true + }, + "@nx/nx-linux-arm64-gnu": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.5.6.tgz", + "integrity": "sha512-4hZI5NmnBEAzr3NV/BtlPjbSVffLWGGCJ5tB/JB/NpW/vMtzOPCZ4RvsHuJMPprqHcXOdUnBgZFEcLbEMUXz0A==", + "dev": true, + "optional": true + }, + "@nx/nx-linux-arm64-musl": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.5.6.tgz", + "integrity": "sha512-n0oIBblMN+nlcBUbrFUkRSyzKZVR+G1lzdZ3PuHVwLC664hkbijEBAdF2E321yRfv5ohQVY0UIYDZVFN2XhFUg==", + "dev": true, + "optional": true + }, + "@nx/nx-linux-x64-gnu": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.5.6.tgz", + "integrity": "sha512-IuoNo1bDHyJEeHom/n2m4+AA+UQ+Rlryvt9+bTdADclSFjmBLYCgbJwQRy7q9+vQk2mpQm0pQJv4d3XKCpDH+g==", + "dev": true, + "optional": true + }, + "@nx/nx-linux-x64-musl": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.5.6.tgz", + "integrity": "sha512-FXtB8m/CSRkXLtDOAGfImO9OCUDIwYBssnvCVqX6PyPTBaVWo/GvX1O9WRbXSqSVIaJJTPn1aY/p6vptlGbDFw==", + "dev": true, + "optional": true + }, + "@nx/nx-win32-arm64-msvc": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.5.6.tgz", + "integrity": "sha512-aIDU84rjvxoqyUDIdN4VwS91Yec8bAtXOxjOFlF2acY2tXh0RjzmM+mkEP44nVAzFy0V1/cjzBKb6643FsEqdA==", + "dev": true, + "optional": true + }, + "@nx/nx-win32-x64-msvc": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.5.6.tgz", + "integrity": "sha512-zWB/2TjhNYKHbuPh++5hYitno3EpSFXrPND0I0VLec27WW7voRY9XQFFznA3omForU4FfmVhITcKCqzIb3EtpA==", + "dev": true, + "optional": true + }, + "@nx/storybook": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-19.5.6.tgz", + "integrity": "sha512-9lfGxk/Wl6yVXWJZrOgcgYP1QmdxH6GG+VmOB+ofvQWapfH962jadmNlgxDzQW9uYoNI50WHibVq1eCfll68Uw==", + "dev": true, + "requires": { + "@nrwl/storybook": "19.5.6", + "@nx/cypress": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/eslint": "19.5.6", + "@nx/js": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "semver": "^7.5.3", + "tslib": "^2.3.0" + } + }, + "@nx/web": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.5.6.tgz", + "integrity": "sha512-mCw2KpVj8FPieRFn98bMJxF4s1RCMTciC78NKFiC0Dmg0KFmhFUw6geWe8anhhjbTxqFvLENMJQIn9K4dlaL1A==", + "dev": true, + "requires": { + "@nrwl/web": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "chalk": "^4.1.0", + "detect-port": "^1.5.1", + "http-server": "^14.1.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@nx/webpack": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-19.5.6.tgz", + "integrity": "sha512-7xMYx0MIxf4kuhiIyF7QEee7AgK1wzroO2wl+9fU8sjKhvDgW9k8huMCNkOcScptB3SP4CiM9b7S5c/pwr75hQ==", + "dev": true, + "requires": { + "@babel/core": "^7.23.2", + "@module-federation/enhanced": "^0.2.3", + "@module-federation/sdk": "^0.2.3", + "@nrwl/webpack": "19.5.6", + "@nx/devkit": "19.5.6", + "@nx/js": "19.5.6", + "@phenomnomnominal/tsquery": "~5.0.1", + "ajv": "^8.12.0", + "autoprefixer": "^10.4.9", + "babel-loader": "^9.1.2", + "browserslist": "^4.21.4", + "chalk": "^4.1.0", + "copy-webpack-plugin": "^10.2.4", + "css-loader": "^6.4.0", + "css-minimizer-webpack-plugin": "^5.0.0", + "express": "^4.19.2", + "fork-ts-checker-webpack-plugin": "7.2.13", + "http-proxy-middleware": "^3.0.0", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "^4.0.2", + "loader-utils": "^2.0.3", + "mini-css-extract-plugin": "~2.4.7", + "parse5": "4.0.0", + "postcss": "^8.4.38", + "postcss-import": "~14.1.0", + "postcss-loader": "^6.1.1", + "rxjs": "^7.8.0", + "sass": "^1.42.1", + "sass-loader": "^12.2.0", + "source-map-loader": "^5.0.0", + "style-loader": "^3.3.0", + "stylus": "^0.59.0", + "stylus-loader": "^7.1.0", + "terser-webpack-plugin": "^5.3.3", + "ts-loader": "^9.3.1", + "tsconfig-paths-webpack-plugin": "4.0.0", + "tslib": "^2.3.0", + "webpack": "^5.80.0", + "webpack-dev-server": "^4.9.3", + "webpack-node-externals": "^3.0.0", + "webpack-subresource-integrity": "^5.1.0" + }, + "dependencies": { + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, + "copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + } + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "requires": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + } + }, + "less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true + } + } + }, + "mini-css-extract-plugin": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", + "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + }, + "webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "dependencies": { + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + } + } + } + } + }, + "@nx/workspace": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.5.6.tgz", + "integrity": "sha512-VkyHzSPI+++kLgftE6HA/jXcbn3zZwDYjhsrmSqwutj8BTuKhxs1YIL2gkzYVoTytF1wpWl3nk5MzqMGclptjA==", + "dev": true, + "requires": { + "@nrwl/workspace": "19.5.6", + "@nx/devkit": "19.5.6", + "chalk": "^4.1.0", + "enquirer": "~2.3.6", + "nx": "19.5.6", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@peculiar/asn1-android": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz", + "integrity": "sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==", + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@peculiar/asn1-ecc": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz", + "integrity": "sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==", + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@peculiar/asn1-rsa": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz", + "integrity": "sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==", + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "asn1js": "^3.0.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@peculiar/asn1-schema": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", + "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", + "requires": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@peculiar/asn1-x509": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz", + "integrity": "sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==", + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "asn1js": "^3.0.5", + "ipaddr.js": "^2.1.0", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "peer": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "@peculiar/webcrypto": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz", + "integrity": "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==", + "peer": true, + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2", + "webcrypto-core": "^1.8.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "peer": true + } + } + }, + "@phenomnomnominal/tsquery": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", + "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", + "dev": true, + "requires": { + "esquery": "^1.4.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, + "@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "@prisma/client": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.18.0.tgz", + "integrity": "sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw==", + "requires": {} + }, + "@prisma/debug": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.18.0.tgz", + "integrity": "sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==" + }, + "@prisma/engines": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.18.0.tgz", + "integrity": "sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==", + "requires": { + "@prisma/debug": "5.18.0", + "@prisma/engines-version": "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169", + "@prisma/fetch-engine": "5.18.0", + "@prisma/get-platform": "5.18.0" + } + }, + "@prisma/engines-version": { + "version": "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169.tgz", + "integrity": "sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==" + }, + "@prisma/fetch-engine": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.18.0.tgz", + "integrity": "sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==", + "requires": { + "@prisma/debug": "5.18.0", + "@prisma/engines-version": "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169", + "@prisma/get-platform": "5.18.0" + } + }, + "@prisma/get-platform": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.18.0.tgz", + "integrity": "sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==", + "requires": { + "@prisma/debug": "5.18.0" + } + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz", + "integrity": "sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==", + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz", + "integrity": "sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==", + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz", + "integrity": "sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==", + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz", + "integrity": "sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==", + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz", + "integrity": "sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==", + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz", + "integrity": "sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==", + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz", + "integrity": "sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==", + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz", + "integrity": "sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==", + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz", + "integrity": "sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==", + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz", + "integrity": "sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==", + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz", + "integrity": "sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==", + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz", + "integrity": "sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==", + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz", + "integrity": "sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==", + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz", + "integrity": "sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==", + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz", + "integrity": "sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==", + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz", + "integrity": "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==", + "optional": true + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@schematics/angular": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.1.1.tgz", + "integrity": "sha512-6nQUSuFSP7un5Bmm6/MpQXq3jnkdEYg2MUPv7JStsqnT1YYzUsDjkUv7Hsci0xQmeUAzVz3ueg4znviJoQxWdg==", + "requires": { + "@angular-devkit/core": "18.1.1", + "@angular-devkit/schematics": "18.1.1", + "jsonc-parser": "3.3.1" + } + }, + "@sigstore/bundle": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", + "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", + "dev": true, + "requires": { + "@sigstore/protobuf-specs": "^0.3.1" + } + }, + "@sigstore/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", + "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "dev": true + }, + "@sigstore/protobuf-specs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz", + "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==", + "dev": true + }, + "@sigstore/sign": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.1.tgz", + "integrity": "sha512-YZ71wKIOweC8ViUeZXboz0iPLqMkskxuoeN/D1CEpAyZvEepbX9oRMIoO6a/DxUqO1VEaqmcmmqzSiqtOsvSmw==", + "dev": true, + "requires": { + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" + } + }, + "@sigstore/tuf": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.3.tgz", + "integrity": "sha512-agQhHNkIddXFslkudjV88vTXiAMEyUtso3at6ZHUNJ1agZb7Ze6VW/PddHipdWBu1t+8OWLW5X5yZOPiOnaWJQ==", + "dev": true, + "requires": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.1" + } + }, + "@sigstore/verify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz", + "integrity": "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==", + "dev": true, + "requires": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + } + }, + "@simplewebauthn/browser": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-9.0.1.tgz", + "integrity": "sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw==", + "requires": { + "@simplewebauthn/types": "^9.0.1" + } + }, + "@simplewebauthn/server": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.3.tgz", + "integrity": "sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA==", + "requires": { + "@hexagon/base64": "^1.1.27", + "@levischuck/tiny-cbor": "^0.2.2", + "@peculiar/asn1-android": "^2.3.10", + "@peculiar/asn1-ecc": "^2.3.8", + "@peculiar/asn1-rsa": "^2.3.8", + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8", + "@simplewebauthn/types": "^9.0.1", + "cross-fetch": "^4.0.0" + } + }, + "@simplewebauthn/types": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz", + "integrity": "sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==" + }, + "@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==", + "devOptional": true + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + }, + "@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==" + }, + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "devOptional": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "devOptional": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@stencil/core": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.18.0.tgz", + "integrity": "sha512-cN+nvjy0L8KyYq7N1bmswN/AcBustFlsAxfyPQ+fd3m98lPo53jNKIxKve1ZQ4ZmzSzYO7alDhZvjIesM0rl7w==" + }, + "@storybook/addon-actions": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.2.6.tgz", + "integrity": "sha512-iCsf3V28/jJ95w2zd8aSvR4denoA2UYV3fpNCTGOURqICyKOG3cyVxvqKp8Hhcwn7trNOsK+HlL6q5gpv56ViA==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0", + "@types/uuid": "^9.0.1", + "dequal": "^2.0.2", + "polished": "^4.2.2", + "uuid": "^9.0.0" + } + }, + "@storybook/addon-backgrounds": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.2.6.tgz", + "integrity": "sha512-61NFowA6EmCw+Eyzp0U4fat9MlPDdnT7aoDyzqSImLwWLITY9IvmWuTeo7XKJZN3fe22z1r7cZseKdYrtaHcKw==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-controls": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.2.6.tgz", + "integrity": "sha512-EHUwHy+oZZv3pXzN7fuXWrS/meHFjqcELY3RBvOyEkGf21agl6co6R1tnf6d5N5QoYAGfIbDO7dkauSL2RfNAw==", + "dev": true, + "requires": { + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-docs": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.2.6.tgz", + "integrity": "sha512-qe7hxntaezqjKdU9QS+Q9NFL6i/uNdBxdvOnCKgPhBAY/zY6yhk5t3sOvonynPK5nkaNAowfSNPIzNxAXlJ1sA==", + "dev": true, + "requires": { + "@babel/core": "^7.24.4", + "@mdx-js/react": "^3.0.0", + "@storybook/blocks": "8.2.6", + "@storybook/csf-plugin": "8.2.6", + "@storybook/global": "^5.0.0", + "@storybook/react-dom-shim": "8.2.6", + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "fs-extra": "^11.1.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "rehype-external-links": "^3.0.0", + "rehype-slug": "^6.0.0", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "@storybook/addon-essentials": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.2.6.tgz", + "integrity": "sha512-diGjGZcZNov+RCAVQBTm8JKP2kUtMRuJIQFBeXdPWpu6hYBk6lw1FlAf2GywWGCvdny1pJT90hfoD33qUMNuDg==", + "dev": true, + "requires": { + "@storybook/addon-actions": "8.2.6", + "@storybook/addon-backgrounds": "8.2.6", + "@storybook/addon-controls": "8.2.6", + "@storybook/addon-docs": "8.2.6", + "@storybook/addon-highlight": "8.2.6", + "@storybook/addon-measure": "8.2.6", + "@storybook/addon-outline": "8.2.6", + "@storybook/addon-toolbars": "8.2.6", + "@storybook/addon-viewport": "8.2.6", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-highlight": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.2.6.tgz", + "integrity": "sha512-03cV9USsfP3bS4wYV06DYcIaGPfoheQe53Q0Jr1B2yJUVyIPKvmO2nGjLBsqzeL3Wl7vSfLQn0/dUdxCcbqLsw==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/addon-measure": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.2.6.tgz", + "integrity": "sha512-neI8YeSOAtOmzasLxo6O8ZLr2ebMaD7XVF+kYatl5+SpyuwwvUGcP9NkKe5S+mB8V2zxFUIsXS74XrhmQhRoaQ==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/addon-outline": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.2.6.tgz", + "integrity": "sha512-uAlPtqDWlq7MQQ4zJT80qdjbSdLF/zsvtPhidX6h9cjLKNPWAv79xJQ14AJHaMv+Hzy5xKnM4wdEhgPbzKabQg==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-toolbars": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.2.6.tgz", + "integrity": "sha512-0JmRirMpxHS6VZzBk0kY871xWTpkk3TN4S1sxoFf5fcnCfVTHDjEJ5Ws/QWru1RJlIZHuJKRdQIA6Vuq5X+KfQ==", + "dev": true, + "requires": {} + }, + "@storybook/addon-viewport": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.2.6.tgz", + "integrity": "sha512-IAxH9H8tVFzSmZhKf5E+EALiAdkp19RzGqP/rWluD8LH7oW5HumQE/4oN0ZhVMy1RxYsCKFYjWyAp7AuxeMRSw==", + "dev": true, + "requires": { + "memoizerific": "^1.11.3" + } + }, + "@storybook/angular": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/angular/-/angular-8.2.6.tgz", + "integrity": "sha512-kzOA4H09oDMq2KAg3iVDo0cWFx4u8qYbrMaMCbd/UjuSYd1Qx965Dx0m0i5i6t7BObUe5R5RlDhBo/JXAyQ55g==", + "dev": true, + "requires": { + "@storybook/builder-webpack5": "8.2.6", + "@storybook/components": "^8.2.6", + "@storybook/core-webpack": "8.2.6", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "^8.2.6", + "@storybook/preview-api": "^8.2.6", + "@storybook/theming": "^8.2.6", + "@types/node": "^18.0.0", + "@types/react": "^18.0.37", + "@types/react-dom": "^18.0.11", + "@types/semver": "^7.3.4", + "@types/webpack-env": "^1.18.0", + "fd-package-json": "^1.2.0", + "find-up": "^5.0.0", + "semver": "^7.3.7", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0", + "tsconfig-paths-webpack-plugin": "^4.0.1", + "util-deprecate": "^1.0.2", + "webpack": "5" + }, + "dependencies": { + "@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + } + } + } + }, + "@storybook/blocks": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.2.6.tgz", + "integrity": "sha512-nMlZJjVTyfOJ6xwORptsNuS1AZZlDbJUVXc2R8uukGd5GIXxxCdrPk4NvUsjfQslMT9LhYuFld3z62FATsM2rw==", + "dev": true, + "requires": { + "@storybook/csf": "0.1.11", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.2.5", + "@types/lodash": "^4.14.167", + "color-convert": "^2.0.1", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.4.5", + "memoizerific": "^1.11.3", + "polished": "^4.2.2", + "react-colorful": "^5.1.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/builder-webpack5": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.2.6.tgz", + "integrity": "sha512-ba25XOXifbAxUYprw5WWcrYq/2DJODFoOHdv7YZqzjKeDDbg1Us8F+72zlBCdr38wY4V9084Sd8EBVXV5bxzRQ==", + "dev": true, + "requires": { + "@storybook/core-webpack": "8.2.6", + "@types/node": "^18.0.0", + "@types/semver": "^7.3.4", + "browser-assert": "^1.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "cjs-module-lexer": "^1.2.3", + "constants-browserify": "^1.0.0", + "css-loader": "^6.7.1", + "es-module-lexer": "^1.5.0", + "express": "^4.19.2", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "fs-extra": "^11.1.0", + "html-webpack-plugin": "^5.5.0", + "magic-string": "^0.30.5", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "semver": "^7.3.7", + "style-loader": "^3.3.1", + "terser-webpack-plugin": "^5.3.1", + "ts-dedent": "^2.0.0", + "url": "^0.11.0", + "util": "^0.12.4", + "util-deprecate": "^1.0.2", + "webpack": "5", + "webpack-dev-middleware": "^6.1.2", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.6.0" + }, + "dependencies": { + "@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "fork-ts-checker-webpack-plugin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "webpack-dev-middleware": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", + "integrity": "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + } + } + } + }, + "@storybook/codemod": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.2.6.tgz", + "integrity": "sha512-+mFJ6R+JhJLpU7VPDlXU5Yn6nqIBq745GaEosnIiFOdNo3jaxJ58wq/sGhbQvoCHPUxMA+sDQvR7pS62YFoLRQ==", + "dev": true, + "requires": { + "@babel/core": "^7.24.4", + "@babel/preset-env": "^7.24.4", + "@babel/types": "^7.24.0", + "@storybook/core": "8.2.6", + "@storybook/csf": "0.1.11", + "@types/cross-spawn": "^6.0.2", + "cross-spawn": "^7.0.3", + "globby": "^14.0.1", + "jscodeshift": "^0.15.1", + "lodash": "^4.17.21", + "prettier": "^3.1.1", + "recast": "^0.23.5", + "tiny-invariant": "^1.3.1" + }, + "dependencies": { + "globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "requires": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + } + }, + "path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true + }, + "slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true + } + } + }, + "@storybook/components": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.2.9.tgz", + "integrity": "sha512-OkkcZ/f/6o3GdFEEK9ZHKIGHWUHmavZUYs5xaSgU64bOrA2aqEFtfeWWitZYTv3Euhk8MVLWfyEMDfez0AlvDg==", + "dev": true, + "requires": {} + }, + "@storybook/core": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.2.6.tgz", + "integrity": "sha512-XY71g3AcpD6IiER9k9Lt+vlUMYfPIYgWekd7e0Ggzz2gJkPuLunKEdQccLGDSHf5OFAobHhrTJc7ZsvWhmDMag==", + "dev": true, + "requires": { + "@storybook/csf": "0.1.11", + "@types/express": "^4.17.21", + "@types/node": "^18.0.0", + "browser-assert": "^1.2.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0", + "esbuild-register": "^3.5.0", + "express": "^4.19.2", + "process": "^0.11.10", + "recast": "^0.23.5", + "util": "^0.12.4", + "ws": "^8.2.3" + }, + "dependencies": { + "@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + } + } + }, + "@storybook/core-server": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.2.6.tgz", + "integrity": "sha512-L8wT5C9D33gk8Y6fV9Gak52V/pzm60+TXXFRW2+YYMyRwyjC1c/eDePlrRIu7jAJiEs9UmdxxUwM4R/iEhOHzg==", + "dev": true, + "requires": {} + }, + "@storybook/core-webpack": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.2.6.tgz", + "integrity": "sha512-RSqRVNrxrp2pKoQeSmaiHMz7GvAzQ7BV+qPi9gDRDDCuAPrjpY8a17KyqmCJ617asDAb+OEQNBks802xM3pEQw==", + "dev": true, + "requires": { + "@types/node": "^18.0.0", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + } + } + }, + "@storybook/csf": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", + "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==", + "dev": true, + "requires": { + "type-fest": "^2.19.0" + } + }, + "@storybook/csf-plugin": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.2.6.tgz", + "integrity": "sha512-USn7E/bMQYVqvFBuW6d9rKoSuCImjk0BAmc/0wIOuMQ/yQNp2Xze0m8eVkNHUIUDokyx0TXDjRjwq10Xxk16ag==", + "dev": true, + "requires": { + "unplugin": "^1.3.1" + } + }, + "@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true + }, + "@storybook/icons": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.10.tgz", + "integrity": "sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og==", + "dev": true, + "requires": {} + }, + "@storybook/manager-api": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.2.9.tgz", + "integrity": "sha512-mkYvUlfqDw+0WbxIynh5TcrotmoXlumEsOA4+45zuNea8XpEgj5cNBUCnmfEO6yQ85swqkS8YYbMpg1cZyu/Vw==", + "dev": true, + "requires": {} + }, + "@storybook/preview-api": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.2.9.tgz", + "integrity": "sha512-D8/t+a78OJqQAcT/ABa1C4YM/OaLGQ9IvCsp3Q9ruUqDCwuZBj8bG3D4477dlY4owX2ycC0rWYu3VvuK0EmJjA==", + "dev": true, + "requires": {} + }, + "@storybook/react-dom-shim": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.2.6.tgz", + "integrity": "sha512-B+x8UAEQPDp1yhN3tMh09NvSL38QNfJB7PAyLgKrfE7xIAzvewq+RLW2DfGkoZCy+Zr7QSHm1p7NOgud8+sQCg==", + "dev": true, + "requires": {} + }, + "@storybook/theming": { + "version": "8.2.9", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.2.9.tgz", + "integrity": "sha512-OL0NFvowPX85N5zIYdgeKKaFm7V4Vgtci093vL3cDZT13LGH6GuEzJKkUFGuUGNPFlJc+EgTj0o6PYKrOLyQ6w==", + "dev": true, + "requires": {} + }, + "@stripe/stripe-js": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-3.5.0.tgz", + "integrity": "sha512-pKS3wZnJoL1iTyGBXAvCwduNNeghJHY6QSRSNNvpYnrrQrLZ6Owsazjyynu0e0ObRgks0i7Rv+pe2M7/MBTZpQ==" + }, + "@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "requires": { + "tslib": "^2.4.0" + } + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "devOptional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dev": true, + "requires": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" + }, + "dependencies": { + "@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dev": true, + "requires": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + }, + "@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==" + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, + "@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true + }, + "@tufjs/models": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "dev": true, + "requires": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" + }, + "dependencies": { + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "devOptional": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "devOptional": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "devOptional": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "devOptional": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/big.js": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@types/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/cache-manager": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-3.4.2.tgz", + "integrity": "sha512-1IwA74t5ID4KWo0Kndal16MhiPSZgMe1fGc+MLT6j5r+Ab7jku36PFTl4PP6MiWw0BJscM9QpZEo00qixNQoRg==", + "dev": true + }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "@types/color": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.6.tgz", + "integrity": "sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==", + "dev": true, + "requires": { + "@types/color-convert": "*" + } + }, + "@types/color-convert": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.3.tgz", + "integrity": "sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==", + "dev": true, + "requires": { + "@types/color-name": "*" + } + }, + "@types/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-hulKeREDdLFesGQjl96+4aoJSHY5b2GRjagzzcqCfIrWhe5vkCqIvrLbqzBaI1q94Vg8DNJZZqTR5ocdWmWclg==", + "dev": true + }, + "@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "optional": true, + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "optional": true + }, + "@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "optional": true + }, + "@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "optional": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/emscripten": { + "version": "1.39.11", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.11.tgz", + "integrity": "sha512-dOeX2BeNA7j6BTEqJQL3ut0bRCfsyQMd5i4FT8JfHfYhAOuJPCGh0dQFbxVJxUyQ+75x6enhDdndGb624/QszA==", + "dev": true + }, + "@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/google-spreadsheet": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/google-spreadsheet/-/google-spreadsheet-3.1.5.tgz", + "integrity": "sha512-7N+mDtZ1pmya2RRFPPl4KYc2TRgiqCNBLUZfyrKfER+u751JgCO+C24/LzF70UmUm/zhHUbzRZ5mtfaxekQ1ZQ==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "devOptional": true, + "requires": { + "@types/node": "*" + } + }, + "@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@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==", + "devOptional": true + }, + "@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "@types/http-proxy": { + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "devOptional": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "devOptional": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "devOptional": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "29.4.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.4.tgz", + "integrity": "sha512-qezb65VIH7X1wobSnd6Lvdve7PXSyQRa3dljTkhTtDhi603RvHQCshSlJcuyMLHJpeHgY3NKwvDJWxMOOHxGDQ==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "devOptional": true, + "requires": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "requires": { + "@types/node": "*" + } + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "requires": { + "@types/node": "*" + } + }, + "@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true + }, + "@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "optional": true, + "requires": { + "@types/unist": "^2" + } + }, + "@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "dev": true + }, + "@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "optional": true + }, + "@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/oauth": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.4.tgz", + "integrity": "sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/papaparse": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.7.tgz", + "integrity": "sha512-f2HKmlnPdCvS0WI33WtCs5GD7X1cxzzS/aduaxSu3I7TbhWlENjSPs6z5TaB9K0J+BH1jbmqTaM+ja5puis4wg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "@types/passport": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.16.tgz", + "integrity": "sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/passport-google-oauth20": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@types/passport-google-oauth20/-/passport-google-oauth20-2.0.16.tgz", + "integrity": "sha512-ayXK2CJ7uVieqhYOc6k/pIr5pcQxOLB6kBev+QUGS7oEZeTgIs1odDobXRqgfBPvXzl0wXCQHftV5220czZCPA==", + "dev": true, + "requires": { + "@types/express": "*", + "@types/passport": "*", + "@types/passport-oauth2": "*" + } + }, + "@types/passport-oauth2": { + "version": "1.4.16", + "resolved": "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.16.tgz", + "integrity": "sha512-Sdr0rpAdkiidUOtyaapGgvXyMjqYlMTFHRy7gtJtzr0/ysEIa72N3j2FSHIRc14h29g1+dzDl8IW2WT2Mu29vQ==", + "dev": true, + "requires": { + "@types/express": "*", + "@types/oauth": "*", + "@types/passport": "*" + } + }, + "@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "dev": true + }, + "@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "@types/react": { + "version": "18.3.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", + "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "requires": { + "@types/node": "*" + } + }, + "@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" + }, + "@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "requires": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true + }, + "@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "requires": { + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "devOptional": true + }, + "@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "@types/unist": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==", + "devOptional": true + }, + "@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "@types/validator": { + "version": "13.11.10", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz", + "integrity": "sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg==" + }, + "@types/webpack-env": { + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz", + "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==", + "dev": true + }, + "@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" + }, + "@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "devOptional": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "devOptional": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + } + }, + "@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", + "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0" + } + }, + "@typescript-eslint/types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", + "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", + "dev": true, + "peer": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", + "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", + "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "8.3.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "@vitejs/plugin-basic-ssl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", + "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "requires": {} + }, + "@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@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==" + }, + "@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==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@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==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@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==" + }, + "@yarnpkg/fslib": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", + "dev": true, + "requires": { + "@yarnpkg/libzip": "^2.3.0", + "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@yarnpkg/libzip": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", + "dev": true, + "requires": { + "@types/emscripten": "^1.39.6", + "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "@yarnpkg/parsers": { + "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", + "dev": true, + "requires": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + } + }, + "@zkochan/js-yaml": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + } + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "devOptional": true + }, + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "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==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" + }, + "acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "devOptional": true, + "requires": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==" + }, + "address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "adm-zip": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz", + "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==", + "dev": true + }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + } + } + }, + "ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "requires": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "alphavantage": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/alphavantage/-/alphavantage-2.2.0.tgz", + "integrity": "sha512-wsN6c78DWEfnmT7zIqs95N0cBT/h9WHxby3pSscUtTA+wRIO29BqDJQqZnQcy6GddlIsBp5GQk8gEeIAR0FdBg==", + "requires": { + "cross-fetch": "^3.0.5" + }, + "dependencies": { + "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==", + "requires": { + "node-fetch": "^2.6.12" + } + } + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + } + } + }, + "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==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + } + } + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + } + } + }, + "app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "dev": true + }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "devOptional": true, + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "devOptional": true + } + } + }, + "aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } + }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + } + }, + "array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "requires": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "devOptional": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "requires": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "await-lock": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "axios": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", + "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true, + "requires": {} + }, + "babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "devOptional": true, + "requires": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "requires": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "requires": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + } + }, + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "requires": { + "p-locate": "^6.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" + }, + "pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "requires": { + "find-up": "^6.3.0" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" + } + } + }, + "babel-plugin-const-enum": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", + "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.3.3", + "@babel/traverse": "^7.16.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "devOptional": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "devOptional": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "devOptional": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "devOptional": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + } + }, + "babel-plugin-transform-typescript-metadata": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", + "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "devOptional": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "devOptional": true, + "requires": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-arraybuffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", + "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "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==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + } + } + }, + "big.js": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", + "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==" + }, + "bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "requires": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "bootstrap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==", + "requires": {} + }, + "borc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/borc/-/borc-2.1.2.tgz", + "integrity": "sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w==", + "requires": { + "bignumber.js": "^9.0.0", + "buffer": "^5.5.0", + "commander": "^2.15.0", + "ieee754": "^1.1.13", + "iso-url": "~0.4.7", + "json-text-sequence": "~0.1.0", + "readable-stream": "^3.6.0" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-assert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", + "dev": true + }, + "browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "requires": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "devOptional": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "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==" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "peer": true + }, + "bull": { + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/bull/-/bull-4.10.4.tgz", + "integrity": "sha512-o9m/7HjS/Or3vqRd59evBlWCXd9Lp+ALppKseoSKHaykK46SmRjAilX98PgmOz1yeVaurt8D5UtvEt4bUjM3eA==", + "requires": { + "cron-parser": "^4.2.1", + "debuglog": "^1.0.0", + "get-port": "^5.1.1", + "ioredis": "^5.0.0", + "lodash": "^4.17.21", + "msgpackr": "^1.5.2", + "semver": "^7.3.2", + "uuid": "^8.3.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, + "bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "requires": { + "run-applescript": "^7.0.0" + } + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "requires": { + "streamsearch": "^1.1.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "cacache": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "requires": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + } + }, + "cache-manager": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-3.4.3.tgz", + "integrity": "sha512-6+Hfzy1SNs/thUwo+07pV0ozgxc4sadrAN0eFVGvXl/X9nz3J0BqEnnEoyxEn8jnF+UkEo0MKpyk9BO80hMeiQ==", + "requires": { + "async": "3.2.0", + "lodash": "^4.17.21", + "lru-cache": "6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "cache-manager-redis-store": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cache-manager-redis-store/-/cache-manager-redis-store-2.0.0.tgz", + "integrity": "sha512-bWLWlUg6nCYHiJLCCYxY2MgvwvKnvlWwrbuynrzpjEIhfArD2GC9LtutIHFEPeyGVQN6C+WEw+P3r+BFBwhswg==", + "requires": { + "redis": "^3.0.2" + } + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "devOptional": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "devOptional": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001653", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", + "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==" + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "devOptional": true + }, + "character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "optional": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chart.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.2.0.tgz", + "integrity": "sha512-wbtcV+QKeH0F7gQZaCJEIpsNriFheacouJQTVIjITi3eQA8bTlIBoknz0+dgV79aeKLNMAX+nDslIVE/nJ3rzA==", + "requires": { + "@kurkle/color": "^0.3.0" + } + }, + "chartjs-adapter-date-fns": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-3.0.0.tgz", + "integrity": "sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==", + "requires": {} + }, + "chartjs-chart-treemap": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/chartjs-chart-treemap/-/chartjs-chart-treemap-2.3.1.tgz", + "integrity": "sha512-GW+iODLICIJhNZtHbTtaOjCwRIxmXcquXRKDFMsrkXyqyDeSN1aiVfzNNj6Xjy55soopqRA+YfHqjT2S2zF7lQ==", + "requires": {} + }, + "chartjs-plugin-annotation": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chartjs-plugin-annotation/-/chartjs-plugin-annotation-2.1.2.tgz", + "integrity": "sha512-kmEp2WtpogwnKKnDPO3iO3mVwvVGtmG5BkZVtAEZm5YzJ9CYxojjYEgk7OTrFbJ5vU098b84UeJRe8kRfNcq5g==", + "requires": {} + }, + "chartjs-plugin-datalabels": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.2.0.tgz", + "integrity": "sha512-14ZU30lH7n89oq+A4bWaJPnAG8a7ZTk7dKf48YAzMvJjQtjrgg5Dpk9f+LbjCF6bpx3RAGTeL13IXpKQYyRvlw==", + "requires": {} + }, + "check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "requires": { + "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" + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "requires": { + "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" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "requires": { + "consola": "^3.2.3" + }, + "dependencies": { + "consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true + } + } + }, + "cjs-module-lexer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.0.tgz", + "integrity": "sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g==", + "devOptional": true + }, + "class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + }, + "class-validator": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz", + "integrity": "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==", + "requires": { + "@types/validator": "^13.11.8", + "libphonenumber-js": "^1.10.53", + "validator": "^13.9.0" + } + }, + "clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "devOptional": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==" + }, + "cli-table3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", + "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==" + }, + "clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "optional": true, + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + }, + "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==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "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==", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "devOptional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "codelyzer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", + "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", + "dev": true, + "requires": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + }, + "dependencies": { + "@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "dev": true, + "requires": {} + }, + "@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "dev": true, + "requires": {} + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", + "dev": true + } + } + }, + "collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "devOptional": true + }, + "color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "requires": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "requires": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "devOptional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "comment-json": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", + "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "dev": true, + "requires": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + } + }, + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "devOptional": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "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==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "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==" + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "requires": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + } + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-webpack-plugin": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", + "requires": { + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.1", + "globby": "^14.0.0", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "requires": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + } + }, + "path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==" + }, + "slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==" + } + } + }, + "core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "requires": { + "browserslist": "^4.23.0" + } + }, + "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==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true + }, + "cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "optional": true, + "requires": { + "layout-base": "^1.0.0" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@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" + } + }, + "countries-and-timezones": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/countries-and-timezones/-/countries-and-timezones-3.4.1.tgz", + "integrity": "sha512-INeHGCony4XUUR8iGL/lmt9s1Oi+n+gFHeJAMfbV5hJfYeDOB8JG1oxz5xFQu5oBZoRCJe/87k1Vzue9DoIauA==" + }, + "countries-list": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/countries-list/-/countries-list-3.1.0.tgz", + "integrity": "sha512-HpTBLZba1VPTZSjUnUwR7SykxV7Z/7/+ZM5x5wi5tO99Qvom6bE2SC+AQ18016ujg3jSlYBbMITrHNnPAHSM9Q==" + }, + "countup.js": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.8.0.tgz", + "integrity": "sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ==" + }, + "create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "devOptional": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "critters": { + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.24.tgz", + "integrity": "sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==", + "requires": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "postcss-media-query-parser": "^0.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cron": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cron/-/cron-2.4.0.tgz", + "integrity": "sha512-Cx77ic1TyIAtUggr0oAhtS8MLzPBUqGNIvdDM7jE3oFIxfe8LXWI9q3iQN/H2CebAiMir53LQKWOhEKnzkJTAQ==", + "requires": { + "luxon": "^3.2.1" + } + }, + "cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "requires": { + "luxon": "^3.2.1" + } + }, + "cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "requires": { + "node-fetch": "^2.6.12" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true + } + } + }, + "css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, + "requires": {} + }, + "css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + } + }, + "css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + } + }, + "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==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "dev": true, + "requires": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + } + }, + "cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + } + }, + "cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "requires": { + "css-tree": "~2.2.0" + }, + "dependencies": { + "css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "requires": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + }, + "mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + } + } + }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "devOptional": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "devOptional": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "devOptional": true + } + } + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "cypress": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.2.1.tgz", + "integrity": "sha512-OYkSgzA4J4Q7eMjZvNf5qWpBLR4RXrkqjL3UZ1UzGGLAskO0nFTi/RomNTG6TKvL3Zp4tw4zFY1gp5MtmkCZrA==", + "dev": true, + "requires": { + "@cypress/listr-verbose-renderer": "^0.4.1", + "@cypress/request": "^2.88.5", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "^6.0.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.1.2", + "blob-util": "2.0.2", + "bluebird": "^3.7.2", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-table3": "~0.6.0", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "debug": "^4.1.1", + "eventemitter2": "^6.4.2", + "execa": "^4.0.2", + "executable": "^4.1.1", + "extract-zip": "^1.7.0", + "fs-extra": "^9.0.1", + "getos": "^3.2.1", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.2", + "lazy-ass": "^1.6.0", + "listr": "^0.14.3", + "lodash": "^4.17.19", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "moment": "^2.27.0", + "ospath": "^1.2.2", + "pretty-bytes": "^5.4.1", + "ramda": "~0.26.1", + "request-progress": "^3.0.0", + "supports-color": "^7.2.0", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "url": "^0.11.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cytoscape": { + "version": "3.29.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.29.2.tgz", + "integrity": "sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ==", + "optional": true + }, + "cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "optional": true, + "requires": { + "cose-base": "^1.0.0" + } + }, + "d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "optional": true, + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "optional": true, + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "optional": true + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "optional": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "optional": true, + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "optional": true + }, + "d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "optional": true, + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "optional": true, + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "optional": true + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "optional": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "optional": true, + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "optional": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "optional": true + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "optional": true, + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "optional": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "optional": true + }, + "d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "optional": true, + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "optional": true + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "optional": true, + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "optional": true + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "optional": true + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "optional": true + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "optional": true + }, + "d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "optional": true, + "requires": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + }, + "dependencies": { + "d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "optional": true, + "requires": { + "internmap": "^1.0.0" + } + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "optional": true + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "optional": true, + "requires": { + "d3-path": "1" + } + }, + "internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "optional": true + } + } + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "optional": true, + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "optional": true, + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "optional": true + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "optional": true, + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "optional": true, + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "optional": true, + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "optional": true + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "optional": true, + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "optional": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "optional": true, + "requires": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "devOptional": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + } + }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==" + }, + "date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true + }, + "dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "optional": true + }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==" + }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "devOptional": true + }, + "decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "optional": true, + "requires": { + "character-entities": "^2.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "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==", + "devOptional": true + }, + "default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "requires": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + } + }, + "default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==" + }, + "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==", + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "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==" + }, + "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==" + } + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "requires": { + "clone": "^1.0.2" + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==" + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true + }, + "delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "optional": true, + "requires": { + "robust-predicates": "^3.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "devOptional": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "delimit-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", + "integrity": "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==" + }, + "denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "devOptional": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "devOptional": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "4" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "devOptional": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "devOptional": true, + "requires": { + "utila": "~0.4" + } + }, + "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==", + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "devOptional": true, + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "requires": { + "domelementtype": "^2.3.0" + } + }, + "dompurify": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.2.tgz", + "integrity": "sha512-hLGGBI1tw5N8qTELr3blKjAML/LY4ANxksbS612UiJyDfyf/2D092Pvm+S7pmeTGJRqvlJkFzBoHBQKgQlOQVg==", + "optional": true + }, + "domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "devOptional": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "16.1.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz", + "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==" + }, + "dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==" + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + } + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "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==" + }, + "ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==" + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "dev": true + }, + "elkjs": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", + "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", + "optional": true + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "devOptional": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emoji-toolkit": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-8.0.0.tgz", + "integrity": "sha512-Vz8YIqQJsQ+QZ4yuKMMzliXceayqfWbNjb6bST+vm77QAhU2is3I+/PRxrNknW+q1bvHHMgjLCQXxzINWLVapg==", + "optional": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "envalid": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/envalid/-/envalid-7.3.1.tgz", + "integrity": "sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg==", + "requires": { + "tslib": "2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true + }, + "environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-inject": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz", + "integrity": "sha512-JM8N6PytDbmIYm1IhPWlo8vr3NtfjhDY/1MhD/a5b/aad/USE8a0+NsqE9d5n+GVGmuNkPQWm4bFQWv18d8tMg==", + "dev": true + }, + "es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "requires": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "esbuild-register": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz", + "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "esbuild-wasm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.21.5.tgz", + "integrity": "sha512-L/FlOPMMFtw+6qPAbuPvJXdrOYOp9yx/PEwSrIZW0qghY4vgV003evdYDwqQ/9ENMQI0B6RMod9xT4FHtto6OQ==" + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" + }, + "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==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "devOptional": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "eslint-plugin-cypress": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.1.tgz", + "integrity": "sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w==", + "dev": true, + "requires": { + "globals": "^13.20.0" + }, + "dependencies": { + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "requires": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + } + } + }, + "eslint-plugin-storybook": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.15.tgz", + "integrity": "sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==", + "dev": true, + "requires": { + "@storybook/csf": "^0.0.1", + "@typescript-eslint/utils": "^5.45.0", + "requireindex": "^1.1.0", + "ts-dedent": "^2.2.0" + }, + "dependencies": { + "@storybook/csf": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz", + "integrity": "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "eslint-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", + "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + } + } + }, + "executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "requires": { + "pify": "^2.2.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "devOptional": true + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", + "dev": true + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "devOptional": true, + "requires": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "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==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==" + }, + "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==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "devOptional": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-package-json": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-1.2.0.tgz", + "integrity": "sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==", + "dev": true, + "requires": { + "walk-up-path": "^3.0.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-file-up": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", + "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", + "dev": true, + "requires": { + "resolve-dir": "^1.0.1" + } + }, + "find-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", + "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", + "dev": true, + "requires": { + "find-file-up": "^2.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + }, + "flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "flow-parser": { + "version": "0.235.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.235.1.tgz", + "integrity": "sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", + "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "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==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "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==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "devOptional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "devOptional": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gaxios": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + } + } + }, + "gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "requires": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "devOptional": true + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" + }, + "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==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "requires": { + "async": "^3.2.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "giget": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz", + "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==", + "dev": true, + "requires": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.3", + "nypm": "^0.3.8", + "ohash": "^1.1.3", + "pathe": "^1.1.2", + "tar": "^6.2.0" + }, + "dependencies": { + "consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true + } + } + }, + "github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "devOptional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "dev": true, + "requires": { + "ini": "1.3.7" + }, + "dependencies": { + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + } + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "optional": true, + "requires": { + "delegate": "^3.1.2" + } + }, + "google-auth-library": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz", + "integrity": "sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==", + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^4.0.0", + "gcp-metadata": "^4.2.0", + "gtoken": "^5.0.4", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "google-p12-pem": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", + "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", + "requires": { + "node-forge": "^1.3.1" + } + }, + "google-spreadsheet": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/google-spreadsheet/-/google-spreadsheet-3.2.0.tgz", + "integrity": "sha512-z7XMaqb+26rdo8p51r5O03u8aPLAPzn5YhOXYJPcf2hdMVr0dUbIARgdkRdmGiBeoV/QoU/7VNhq1MMCLZv3kQ==", + "requires": { + "axios": "^0.21.4", + "google-auth-library": "^6.1.3", + "lodash": "^4.17.21" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "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==" + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "gtoken": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", + "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", + "requires": { + "gaxios": "^4.0.0", + "google-p12-pem": "^3.1.3", + "jws": "^4.0.0" + } + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "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==" + }, + "harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "hast-util-to-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "devOptional": true + }, + "helmet": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.0.0.tgz", + "integrity": "sha512-MsIgYmdBh460ZZ8cJC81q4XJknjG567wzEmv46WOBblDb6TUd3z8/GhgmsM9pn8g2B80tAJ4m5/d3Bi1KrSUBQ==" + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true + } + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "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==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "devOptional": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "devOptional": true + }, + "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==", + "devOptional": true, + "requires": { + "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" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "devOptional": true + } + } + }, + "html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "devOptional": true, + "requires": { + "@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" + } + }, + "htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "requires": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "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==" + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "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==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "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==" + }, + "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==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "devOptional": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "devOptional": true, + "requires": { + "debug": "4" + } + } + } + }, + "http-proxy-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", + "requires": { + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.5" + } + }, + "http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "requires": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + } + }, + "http-status-codes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==" + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "requires": {} + }, + "idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==" + }, + "ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dev": true, + "requires": { + "minimatch": "^9.0.0" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "optional": true + }, + "immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + } + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "devOptional": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "devOptional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true + }, + "internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "optional": true + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "ionicons": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.4.0.tgz", + "integrity": "sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ==", + "requires": { + "@stencil/core": "^4.0.3" + } + }, + "ioredis": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.1.tgz", + "integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==", + "requires": { + "@ioredis/commands": "^1.1.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + } + }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + } + }, + "ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==" + }, + "is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "requires": { + "is-typed-array": "^1.1.13" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "devOptional": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "requires": { + "is-docker": "^3.0.0" + } + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true + }, + "is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + } + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, + "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==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "devOptional": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.14" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "requires": { + "is-inside-container": "^1.0.0" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "iso-url": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-0.4.7.tgz", + "integrity": "sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "requires": {} + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==" + }, + "istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "requires": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "devOptional": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "devOptional": true, + "requires": { + "semver": "^7.5.3" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "devOptional": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true + } + } + }, + "istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "devOptional": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jake": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true + }, + "jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "devOptional": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + } + }, + "jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "devOptional": true, + "requires": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "devOptional": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "devOptional": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "devOptional": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true + } + } + }, + "jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "devOptional": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "devOptional": true, + "requires": {} + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "devOptional": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "devOptional": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "devOptional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "devOptional": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "devOptional": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "devOptional": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "devOptional": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + } + }, + "jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "devOptional": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "devOptional": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "devOptional": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "devOptional": true, + "requires": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } + }, + "jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "devOptional": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "devOptional": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "devOptional": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "devOptional": true, + "requires": {} + }, + "jest-preset-angular": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.1.0.tgz", + "integrity": "sha512-UJwPtpsAMl30UtBjHW0Ai0hhoKsNURC1dXH5tSYjumUsWR7iDke+oBEykz7uXv4rN+PWgeNIqkxo4KHQjOITlw==", + "dev": true, + "requires": { + "bs-logger": "^0.2.6", + "esbuild": ">=0.15.13", + "esbuild-wasm": ">=0.15.13", + "jest-environment-jsdom": "^29.0.0", + "jest-util": "^29.0.0", + "pretty-format": "^29.0.0", + "ts-jest": "^29.0.0" + } + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "devOptional": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "devOptional": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "devOptional": true, + "requires": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + } + }, + "jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "devOptional": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "devOptional": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "devOptional": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "devOptional": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "devOptional": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "devOptional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "devOptional": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "devOptional": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "devOptional": true, + "requires": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "devOptional": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" + }, + "jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "peer": true + }, + "js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "devOptional": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "jscodeshift": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, + "requires": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.23.3", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "devOptional": true, + "requires": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "devOptional": true, + "requires": { + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "devOptional": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json-text-sequence": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", + "integrity": "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==", + "requires": { + "delimit-stream": "0.1.0" + } + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonc-eslint-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz", + "integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + } + }, + "jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "requires": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + }, + "dependencies": { + "esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==" + } + } + }, + "jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "requires": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "requires": { + "source-map-support": "^0.5.5" + } + }, + "katex": { + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", + "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", + "optional": true, + "requires": { + "commander": "^8.3.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "optional": true + } + } + }, + "keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "requires": { + "tsscmp": "1.0.6" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", + "optional": true + }, + "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==" + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "devOptional": true + }, + "klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true + }, + "koa": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.11.0.tgz", + "integrity": "sha512-EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA==", + "dev": true, + "requires": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "~3.1.0", + "delegates": "^1.0.0", + "depd": "^1.1.2", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "error-inject": "^1.0.0", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^1.2.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "koa-convert": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", + "integrity": "sha512-K9XqjmEDStGX09v3oxR7t5uPRy0jqJdvodHa6wxWTHrTfDq0WUNnYTOOUZN6g8OM8oZQXprQASbiIXG2Ez8ehA==", + "dev": true, + "requires": { + "co": "^4.6.0", + "koa-compose": "^3.0.0" + }, + "dependencies": { + "koa-compose": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", + "integrity": "sha512-8gen2cvKHIZ35eDEik5WOo8zbVp9t4cP8p4hW4uE55waxolLRexKKrqfCpwhGVppnB40jWeF8bZeTVg99eZgPw==", + "dev": true, + "requires": { + "any-promise": "^1.1.0" + } + } + } + }, + "launch-editor": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz", + "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==", + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "optional": true + }, + "lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true + }, + "less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "optional": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, + "less-loader": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz", + "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", + "requires": {} + }, + "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==", + "devOptional": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "libphonenumber-js": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.1.tgz", + "integrity": "sha512-Wze1LPwcnzvcKGcRHFGFECTaLzxOtujwpf924difr5zniyYv1C2PiW0419qDR7m8lKDxsImu5mwxFuXhXpjmvw==" + }, + "license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "requires": { + "webpack-sources": "^3.0.0" + } + }, + "lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true + }, + "lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + }, + "dependencies": { + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + } + } + }, + "listr2": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.3.tgz", + "integrity": "sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw==", + "dev": true, + "requires": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.0.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "requires": { + "environment": "^1.0.0" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "requires": { + "restore-cursor": "^5.0.0" + } + }, + "cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + } + }, + "emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "requires": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "requires": { + "get-east-asian-width": "^1.0.0" + } + }, + "slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "requires": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + } + } + } + }, + "onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "requires": { + "mimic-function": "^5.0.0" + } + }, + "restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "requires": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + } + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + } + }, + "string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "requires": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "requires": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + } + } + } + }, + "lmdb": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.0.12.tgz", + "integrity": "sha512-JnoEulTgveoC64vlYJ9sufGLuNkk6TcxSYpKxSC9aM42I61jIv3pQH0fgb6qW7HV0+FNqA3g1WCQQYfhfawGoQ==", + "requires": { + "@lmdb/lmdb-darwin-arm64": "3.0.12", + "@lmdb/lmdb-darwin-x64": "3.0.12", + "@lmdb/lmdb-linux-arm": "3.0.12", + "@lmdb/lmdb-linux-arm64": "3.0.12", + "@lmdb/lmdb-linux-x64": "3.0.12", + "@lmdb/lmdb-win32-x64": "3.0.12", + "msgpackr": "^1.10.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.4.1", + "weak-lru-cache": "^1.2.2" + }, + "dependencies": { + "node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + }, + "node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "requires": { + "detect-libc": "^2.0.1" + } + } + } + }, + "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==" + }, + "loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==" + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "optional": true + }, + "lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + } + }, + "long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "devOptional": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==" + }, + "magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dev": true, + "requires": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "devOptional": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true + }, + "markdown-to-jsx": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz", + "integrity": "sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==", + "dev": true, + "requires": {} + }, + "marked": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==" + }, + "mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "optional": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "optional": true, + "requires": { + "@types/mdast": "^3.0.0" + } + }, + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "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==" + }, + "memfs": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz", + "integrity": "sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.4" + } + }, + "memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "dev": true, + "requires": { + "map-or-similar": "^1.5.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "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==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "mermaid": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz", + "integrity": "sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==", + "optional": true, + "requires": { + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.28.1", + "cytoscape-cose-bilkent": "^4.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.9.0", + "katex": "^0.16.9", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "optional": true, + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "optional": true, + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "optional": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "optional": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "optional": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "optional": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "optional": true, + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "optional": true, + "requires": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "optional": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "optional": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "optional": true, + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "optional": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "optional": true, + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "optional": true + }, + "micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "optional": true + }, + "micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "optional": true, + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "optional": true, + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "optional": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "optional": true, + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "optional": true + }, + "micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "optional": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "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==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "mini-css-extract-plugin": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "requires": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + } + }, + "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==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + }, + "minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "optional": true + }, + "mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==" + }, + "ms": { + "version": "3.0.0-canary.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", + "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==" + }, + "msgpackr": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz", + "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "requires": { + "msgpackr-extract": "^3.0.2" + } + }, + "msgpackr-extract": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz", + "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==", + "optional": true, + "requires": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2", + "node-gyp-build-optional-packages": "5.0.7" + } + }, + "multer": { + "version": "1.4.4-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", + "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + } + }, + "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==", + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==" + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "devOptional": true + }, + "needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "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==" + }, + "ng-extract-i18n-merge": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.12.0.tgz", + "integrity": "sha512-ohzt7WLraXS0PVPEohYK0f/TxzGu/1vOYeukncd8r6sJybrSUG/dm/lpxC4Ozkhq4rhKEHRPRTKA5x59qjIfjw==", + "requires": { + "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0", + "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "xmldoc": "^1.1.3" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1800.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1800.2.tgz", + "integrity": "sha512-PX7lCTAqWe9C40+fie+DAc8vhpGA+JgZKWWrMHUTV/iZx8RXx2X4xGQsqYu36p4i3MSfQdbn+0xLWGmjScPVOQ==", + "requires": { + "@angular-devkit/core": "18.0.2", + "rxjs": "7.8.1" + } + }, + "@angular-devkit/core": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.0.2.tgz", + "integrity": "sha512-QXcEdfmODc0rKblBerk30yw70fypIkFm6gQBLJgsshpwc+TMA+fuMLcPQebOTzKLtD2tNUkk/7SrWPQIGqeXaA==", + "requires": { + "ajv": "8.13.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.2.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + } + }, + "ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "requires": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" + }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "requires": { + "tslib": "^2.1.0" + } + } + } + }, + "ngx-device-detector": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ngx-device-detector/-/ngx-device-detector-8.0.0.tgz", + "integrity": "sha512-ik6EwUKnlN+xwoWHzyJp5+V+QRWYrmpTqAvRwa16xBnAVd7/i3jElN7MZjs/InwcYz7AW3XcSNeu+XRvtHgb9w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "ngx-markdown": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-18.0.0.tgz", + "integrity": "sha512-sFR9dIOKobdhNKZTlCrX3RmpoAhZ7k3T9h7oWJP676Oe9BsoxuAYZKJmFDT20vrY6xmFD3WtLJDZR7rNRLf6Uw==", + "requires": { + "clipboard": "^2.0.11", + "emoji-toolkit": "^8.0.0", + "katex": "^0.16.0", + "mermaid": "^10.6.0", + "prismjs": "^1.28.0", + "tslib": "^2.3.0" + } + }, + "ngx-skeleton-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-7.0.0.tgz", + "integrity": "sha512-myc6GNcNhyksZrimIFkCxeihi0kQ8JhQVZiGbtiIv4gYrnnRk5nXbs3kYitK8E8OstHG+jlsmRofqGBxuIsYTA==", + "requires": { + "perf-marks": "^1.13.4", + "tslib": "^2.0.0" + } + }, + "ngx-stripe": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-stripe/-/ngx-stripe-18.0.0.tgz", + "integrity": "sha512-AT67vLeqEUDMnK5TfEaorumYJyOWqecbrh/1UWNtN8vF6Yzb0L/Dty3ANAa/QQi0OvBg6gXrudrhEnT8pT5lng==", + "requires": { + "tslib": "^2.3.0" + } + }, + "nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "optional": true, + "requires": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "devOptional": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "optional": true + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "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==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-fetch-native": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", + "dev": true + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + }, + "node-gyp": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "requires": { + "isexe": "^3.1.1" + } + } + } + }, + "node-gyp-build": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", + "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", + "optional": true + }, + "node-gyp-build-optional-packages": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz", + "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==", + "optional": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "devOptional": true + }, + "node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true + }, + "node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "node-schedule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", + "dev": true, + "requires": { + "cron-parser": "^4.2.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + } + }, + "non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", + "optional": true + }, + "nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "requires": { + "abbrev": "^2.0.0" + } + }, + "normalize-package-data": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "npm-bundled": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^3.0.0" + } + }, + "npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true + }, + "npm-package-arg": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz", + "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dev": true, + "requires": { + "ignore-walk": "^6.0.4" + } + }, + "npm-pick-manifest": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz", + "integrity": "sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==", + "dev": true, + "requires": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + } + }, + "npm-registry-fetch": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", + "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", + "dev": true, + "requires": { + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "nwsapi": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", + "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==", + "devOptional": true + }, + "nx": { + "version": "19.5.6", + "resolved": "https://registry.npmjs.org/nx/-/nx-19.5.6.tgz", + "integrity": "sha512-qjP17aa5ViXSpo0bDgJ7O3b8EY/0+PbX7ZIKvG1g6qasohtfM1y4Sx2bbSow0zCKU0+r1LnR53Q0lyX4OOgtUg==", + "dev": true, + "requires": { + "@napi-rs/wasm-runtime": "0.2.4", + "@nrwl/tao": "19.5.6", + "@nx/nx-darwin-arm64": "19.5.6", + "@nx/nx-darwin-x64": "19.5.6", + "@nx/nx-freebsd-x64": "19.5.6", + "@nx/nx-linux-arm-gnueabihf": "19.5.6", + "@nx/nx-linux-arm64-gnu": "19.5.6", + "@nx/nx-linux-arm64-musl": "19.5.6", + "@nx/nx-linux-x64-gnu": "19.5.6", + "@nx/nx-linux-x64-musl": "19.5.6", + "@nx/nx-win32-arm64-msvc": "19.5.6", + "@nx/nx-win32-x64-msvc": "19.5.6", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.7", + "axios": "^1.7.2", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "front-matter": "^4.0.2", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "jest-diff": "^29.4.1", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "9.0.3", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "ora": "5.3.0", + "semver": "^7.5.3", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true + }, + "dotenv-expand": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "dev": true, + "requires": { + "dotenv": "^16.4.4" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dev": true, + "requires": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "dependencies": { + "consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true + }, + "execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true + }, + "human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "oauth": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.10.0.tgz", + "integrity": "sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q==" + }, + "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==" + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + } + }, + "object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "dev": true + }, + "open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "requires": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + } + }, + "open-color": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/open-color/-/open-color-1.9.1.tgz", + "integrity": "sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw==" + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "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==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ordered-binary": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz", + "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "requires": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + } + } + }, + "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==", + "devOptional": true + }, + "package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "pacote": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", + "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", + "dev": true, + "requires": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + } + }, + "papaparse": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz", + "integrity": "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "devOptional": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "dependencies": { + "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==" + }, + "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==" + } + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "requires": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" + } + }, + "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==", + "requires": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + } + }, + "parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "requires": { + "parse5": "^7.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "devOptional": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "passport": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", + "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", + "requires": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + } + }, + "passport-google-oauth20": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz", + "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==", + "requires": { + "passport-oauth2": "1.x.x" + } + }, + "passport-jwt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz", + "integrity": "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==", + "requires": { + "jsonwebtoken": "^9.0.0", + "passport-strategy": "^1.0.0" + } + }, + "passport-oauth2": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz", + "integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==", + "requires": { + "base64url": "3.x.x", + "oauth": "0.10.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==" + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "devOptional": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==" + } + } + }, + "path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "perf-marks": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/perf-marks/-/perf-marks-1.14.2.tgz", + "integrity": "sha512-N0/bQcuTlETpgox/DsXS1voGjqaoamMoiyhncgeW3rSHy/qw8URVgmPRYfFDQns/+C6yFUHDbeSBGL7ixT6Y4A==", + "requires": { + "tslib": "^2.1.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "devOptional": true + }, + "piscina": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz", + "integrity": "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==", + "requires": { + "nice-napi": "^1.0.2" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "devOptional": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "devOptional": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "devOptional": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "devOptional": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "devOptional": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true + }, + "polished": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.8" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "peer": true + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true + }, + "postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + } + }, + "postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "dev": true, + "requires": {} + }, + "postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "requires": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "requires": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + }, + "postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + } + }, + "postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + } + }, + "postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "dev": true, + "requires": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.16" + } + }, + "postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "dev": true, + "requires": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + } + }, + "postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.16" + } + }, + "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==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true + }, + "prettier-plugin-organize-attributes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-attributes/-/prettier-plugin-organize-attributes-1.0.0.tgz", + "integrity": "sha512-+NmameaLxbCcylEXsKPmawtzla5EE6ECqvGkpfQz4KM847fXDifB1gFnPQEpoADAq6IXg+cMI8Z0ISJEXa6fhg==", + "dev": true, + "requires": {} + }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "devOptional": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true + } + } + }, + "prisma": { + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.18.0.tgz", + "integrity": "sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==", + "requires": { + "@prisma/engines": "5.18.0" + } + }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "optional": true + }, + "proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "devOptional": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "devOptional": true + }, + "pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "requires": { + "tslib": "^2.6.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "rambda": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.3.0.tgz", + "integrity": "sha512-cl/7DCCKNxmsbc0dXZTJTY08rvDdzLhVfE6kPBson1fWzDapLzv0RKSzjpmAqP53fkQqAvq05gpUVHTrUNsuxg==", + "dev": true + }, + "ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "dev": true, + "requires": {} + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "devOptional": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + } + } + }, + "recast": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", + "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "dev": true, + "requires": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redis": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", + "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", + "requires": { + "denque": "^1.5.0", + "redis-commands": "^1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0" + }, + "dependencies": { + "denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" + } + } + }, + "redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, + "redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==" + }, + "redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "requires": { + "redis-errors": "^1.0.0" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==" + }, + "regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + } + }, + "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==", + "requires": { + "@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" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + } + } + }, + "rehype-external-links": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", + "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-is-element": "^3.0.0", + "is-absolute-url": "^4.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0" + } + }, + "rehype-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", + "dev": true, + "requires": { + "@types/hast": "^3.0.0", + "github-slugger": "^2.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "devOptional": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "devOptional": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "devOptional": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "devOptional": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "devOptional": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "devOptional": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "devOptional": true + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "devOptional": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + } + } + }, + "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==", + "dev": true + }, + "replace-in-file": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.0.1.tgz", + "integrity": "sha512-KbhgPq04eA+TxXuUxpgWIH9k/TjF+28ofon2PXP7vq6izAILhxOtksCVcLuuQLtyjouBaPdlH6RJYYcSPVxCOA==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "glob": "^8.1.0", + "yargs": "^17.7.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "devOptional": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "devOptional": true + }, + "resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "dependencies": { + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + }, + "dependencies": { + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + } + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "optional": true + }, + "rollup": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.1.tgz", + "integrity": "sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==", + "requires": { + "@rollup/rollup-android-arm-eabi": "4.21.1", + "@rollup/rollup-android-arm64": "4.21.1", + "@rollup/rollup-darwin-arm64": "4.21.1", + "@rollup/rollup-darwin-x64": "4.21.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.1", + "@rollup/rollup-linux-arm-musleabihf": "4.21.1", + "@rollup/rollup-linux-arm64-gnu": "4.21.1", + "@rollup/rollup-linux-arm64-musl": "4.21.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.1", + "@rollup/rollup-linux-riscv64-gnu": "4.21.1", + "@rollup/rollup-linux-s390x-gnu": "4.21.1", + "@rollup/rollup-linux-x64-gnu": "4.21.1", + "@rollup/rollup-linux-x64-musl": "4.21.1", + "@rollup/rollup-win32-arm64-msvc": "4.21.1", + "@rollup/rollup-win32-ia32-msvc": "4.21.1", + "@rollup/rollup-win32-x64-msvc": "4.21.1", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, + "run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==" + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "optional": true + }, + "rxjs": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", + "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", + "requires": { + "tslib": "^2.1.0" + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "optional": true, + "requires": { + "mri": "^1.1.0" + } + }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, + "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==" + }, + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "safevalues": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", + "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + }, + "sass": { + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz", + "integrity": "sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==", + "requires": { + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "devOptional": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "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==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "dependencies": { + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + } + } + } + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "optional": true + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "requires": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + } + } + }, + "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==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "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==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shx": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", + "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "dev": true, + "requires": { + "minimist": "^1.2.3", + "shelljs": "^0.8.5" + } + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "sigstore": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", + "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", + "dev": true, + "requires": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" + } + }, + "simple-cbor": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/simple-cbor/-/simple-cbor-0.4.1.tgz", + "integrity": "sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "devOptional": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, + "socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dev": true, + "requires": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + } + }, + "sorted-array-functions": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", + "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", + "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + }, + "source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" + }, + "source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "requires": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + } + } + }, + "ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "devOptional": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "devOptional": true + } + } + }, + "standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, + "static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "requires": { + "escodegen": "^1.8.1" + }, + "dependencies": { + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "storybook": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.2.6.tgz", + "integrity": "sha512-8j30wDxQmkcqI0fWcSYFsUCjErsY1yTWbTW+yjbwM8DyW18Cud6CwbFRCxjFsH+2M0CjP6Pqs/m1PGI0vcQscQ==", + "dev": true, + "requires": { + "@babel/core": "^7.24.4", + "@babel/types": "^7.24.0", + "@storybook/codemod": "8.2.6", + "@storybook/core": "8.2.6", + "@types/semver": "^7.3.4", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", + "chalk": "^4.1.0", + "commander": "^6.2.1", + "cross-spawn": "^7.0.3", + "detect-indent": "^6.1.0", + "envinfo": "^7.7.3", + "execa": "^5.0.0", + "fd-package-json": "^1.2.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "giget": "^1.0.0", + "globby": "^14.0.1", + "jscodeshift": "^0.15.1", + "leven": "^3.1.0", + "ora": "^5.4.1", + "prettier": "^3.1.1", + "prompts": "^2.4.0", + "semver": "^7.3.7", + "strip-json-comments": "^3.0.1", + "tempy": "^3.1.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "requires": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" + }, + "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==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "devOptional": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "devOptional": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "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==", + "devOptional": true + }, + "stripe": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-15.11.0.tgz", + "integrity": "sha512-qmZF0PN1jRVpiQrXL8eTb9Jy/6S+aUlcDquKBFT2h3PkaD7RZ444FIojVXUg67FK2zFIUNXgMv02c7csdL5qHg==", + "requires": { + "@types/node": ">=8.1.0", + "qs": "^6.11.0" + } + }, + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + } + }, + "style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "requires": {} + }, + "stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + } + }, + "stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "optional": true + }, + "stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "devOptional": true, + "requires": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "devOptional": true + } + } + }, + "stylus-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz", + "integrity": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==", + "dev": true, + "requires": { + "fast-glob": "^3.2.12", + "normalize-path": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-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==" + }, + "svg-pan-zoom": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz", + "integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==" + }, + "svgmap": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/svgmap/-/svgmap-2.6.0.tgz", + "integrity": "sha512-MePkVjgYlHwEfCSuGt+wB6WX6Z2fTD6yDtqZO5syzKYH7gamt1Hp9f/Bw5R49OvBtbsF7WCaGR0/GhewZGGA+w==", + "requires": { + "svg-pan-zoom": "^3.6.1" + } + }, + "svgo": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.1.tgz", + "integrity": "sha512-xQQTIGRl3gHTO2PFlZFLl+Xwofj+CMOPitfoByGBNAniQnY6SbGgd31u3C8RTqdlqZqYNl9Sb83VXbimVHcU6w==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "devOptional": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", + "dev": true, + "requires": { + "memoizerific": "^1.11.3" + } + }, + "temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "requires": { + "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true + }, + "tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "requires": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "dependencies": { + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + } + } + }, + "terser": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", + "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "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==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "devOptional": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "devOptional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "requires": {} + }, + "throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, + "tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true + }, + "tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "devOptional": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true + }, + "tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + } + } + }, + "tough-cookie-file-store": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tough-cookie-file-store/-/tough-cookie-file-store-2.0.3.tgz", + "integrity": "sha512-sMpZVcmFf6EYFHFFl+SYH4W1/OnXBYMGDsv2IlbQ2caHyFElW/UR/gpj/KYU1JwmP4dE9xqwv2+vWcmlXHojSw==", + "requires": { + "tough-cookie": "^4.0.0" + } + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "devOptional": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "requires": {} + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "requires": {} + }, + "ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "devOptional": true + }, + "ts-jest": { + "version": "29.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", + "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + } + }, + "ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "requires": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + }, + "tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "peer": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "peer": true + } + } + }, + "tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "peer": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "peer": true + } + } + }, + "tuf-js": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "dev": true, + "requires": { + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, + "twitter-api-v2": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.14.2.tgz", + "integrity": "sha512-389e/rWaN8zWkmD5z2IpKVb5+ojPxVtrexQoGBI1Xfib1mE/9M7k7zbnZ3Q/WLwthwcWkQIlB25ecT64AL8LvQ==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "devOptional": true + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, + "typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==" + }, + "ufo": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", + "dev": true + }, + "uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "requires": { + "@lukeed/csprng": "^1.0.0" + } + }, + "uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + }, + "undici": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", + "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==" + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "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==" + }, + "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==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + }, + "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==" + }, + "unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==" + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "requires": { + "qs": "^6.4.0" + } + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "requires": { + "crypto-random-string": "^4.0.0" + } + }, + "unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + } + } + }, + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "optional": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + } + } + }, + "unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "requires": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "dependencies": { + "@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true + } + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "unplugin": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", + "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==", + "dev": true, + "requires": { + "acorn": "^8.11.3", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.1" + } + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, + "upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "requires": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dev": true, + "requires": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.6" + } + } + } + }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "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==", + "devOptional": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + }, + "uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "optional": true, + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "dependencies": { + "diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "optional": true + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "optional": true + } + } + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, + "v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "devOptional": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true + }, + "validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + } + } + }, + "vite": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.2.tgz", + "integrity": "sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==", + "requires": { + "esbuild": "^0.21.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + } + }, + "w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "devOptional": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "devOptional": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "requires": { + "defaults": "^1.0.3" + } + }, + "weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" + }, + "web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", + "optional": true + }, + "webcrypto-core": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.0.tgz", + "integrity": "sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==", + "peer": true, + "requires": { + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^3.0.1", + "pvtsutils": "^1.3.5", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "peer": true + } + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "devOptional": true + }, + "webpack": { + "version": "5.92.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz", + "integrity": "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "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==" + }, + "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==" + }, + "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==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + } + } + }, + "webpack-dev-middleware": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", + "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", + "requires": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "memfs": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", + "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", + "requires": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "requires": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "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.4.0", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" + }, + "dependencies": { + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "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==", + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "requires": { + "glob": "^10.3.7" + } + } + } + }, + "webpack-hot-middleware": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", + "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", + "dev": true, + "requires": { + "ansi-html-community": "0.0.8", + "html-entities": "^2.1.0", + "strip-ansi": "^6.0.0" + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, + "webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true + }, + "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==" + }, + "webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "requires": { + "typed-assert": "^1.0.8" + } + }, + "webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "devOptional": true, + "requires": { + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "devOptional": true + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "devOptional": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "devOptional": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "dependencies": { + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true + } + } + }, + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "requires": {} + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "devOptional": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "devOptional": true + }, + "xmldoc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.3.0.tgz", + "integrity": "sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==", + "requires": { + "sax": "^1.2.4" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yahoo-finance2": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-2.11.3.tgz", + "integrity": "sha512-yN4ADFNi2oNYtO79ntbEkSWdVi4KVmGYLwDJ5KV0czxILbAGj4ah6oCBYvMONeHAeDqxtS62zrG8xrHNF/2STw==", + "requires": { + "@types/tough-cookie": "^4.0.2", + "ajv": "8.10.0", + "ajv-formats": "2.1.1", + "node-fetch": "^2.6.1", + "tough-cookie": "^4.1.2", + "tough-cookie-file-store": "^2.0.3" + }, + "dependencies": { + "ajv": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + } + } + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "ylru": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + }, + "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==", + "devOptional": true + }, + "yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true + }, + "zone.js": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", + "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==" + } + } +} diff --git a/package.json b/package.json index 37e7a2ce2..e40e18f28 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.84.0", + "version": "2.106.0-beta.2", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", @@ -15,7 +15,7 @@ "affected:test": "nx affected:test", "analyze:client": "nx run client:build:production --stats-json && webpack-bundle-analyzer -p 1234 dist/apps/client/en/stats.json", "angular": "node --max_old_space_size=32768 ./node_modules/@angular/cli/bin/ng", - "build:production": "nx run api:copy-assets && nx run api:build:production && nx run client:copy-assets && nx run client:build:production && yarn replace-placeholders-in-build", + "build:production": "nx run api:copy-assets && nx run api:build:production && nx run client:copy-assets && nx run client:build:production && npm run replace-placeholders-in-build", "build:storybook": "nx run ui:build-storybook", "database:format-schema": "prisma format", "database:generate-typings": "prisma generate", @@ -24,7 +24,7 @@ "database:migrate": "prisma migrate deploy", "database:push": "prisma db push", "database:seed": "prisma db seed", - "database:setup": "yarn database:push && yarn database:seed", + "database:setup": "npm run database:push && npm run database:seed", "database:validate-schema": "prisma validate", "dep-graph": "nx dep-graph", "e2e": "ng e2e", @@ -40,11 +40,10 @@ "replace-placeholders-in-build": "node ./replace.build.js", "start": "node dist/apps/api/main", "start:client": "nx run client:copy-assets && nx run client:serve --configuration=development-en --hmr -o", - "start:production": "yarn database:migrate && yarn database:seed && node main", - "start:dev": "yarn install && yarn start", + "start:production": "npm run database:migrate && npm run database:seed && node main", "start:server": "nx run api:copy-assets && nx run api:serve --watch", "start:storybook": "nx run ui:storybook", - "test": "yarn test:api && yarn test:common", + "test": "npm run test:api && npm run test:common", "test:api": "npx dotenv-cli -e .env.example -- nx test api", "test:common": "npx dotenv-cli -e .env.example -- nx test common", "test:single": "nx run api:test --test-file portfolio-calculator-novn-buy-and-sell.spec.ts", @@ -56,17 +55,17 @@ "workspace-generator": "nx workspace-generator" }, "dependencies": { - "@angular/animations": "17.3.10", - "@angular/cdk": "17.3.10", - "@angular/common": "17.3.10", - "@angular/compiler": "17.3.10", - "@angular/core": "17.3.10", - "@angular/forms": "17.3.10", - "@angular/material": "17.3.10", - "@angular/platform-browser": "17.3.10", - "@angular/platform-browser-dynamic": "17.3.10", - "@angular/router": "17.3.10", - "@angular/service-worker": "17.3.10", + "@angular/animations": "18.1.1", + "@angular/cdk": "18.1.1", + "@angular/common": "18.1.1", + "@angular/compiler": "18.1.1", + "@angular/core": "18.1.1", + "@angular/forms": "18.1.1", + "@angular/material": "18.1.1", + "@angular/platform-browser": "18.1.1", + "@angular/platform-browser-dynamic": "18.1.1", + "@angular/router": "18.1.1", + "@angular/service-worker": "18.1.1", "@codewithdan/observable-store": "2.2.15", "@dfinity/agent": "0.15.7", "@dfinity/auth-client": "0.15.7", @@ -86,10 +85,10 @@ "@nestjs/platform-express": "10.1.3", "@nestjs/schedule": "3.0.2", "@nestjs/serve-static": "4.0.0", - "@prisma/client": "5.14.0", + "@prisma/client": "5.18.0", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", - "@stripe/stripe-js": "1.47.0", + "@stripe/stripe-js": "3.5.0", "alphavantage": "2.2.0", "await-lock": "^2.2.2", "big.js": "6.2.1", @@ -100,6 +99,7 @@ "cache-manager-redis-store": "2.0.0", "chart.js": "4.2.0", "chartjs-adapter-date-fns": "3.0.0", + "chartjs-chart-treemap": "2.3.1", "chartjs-plugin-annotation": "2.1.2", "chartjs-plugin-datalabels": "2.2.0", "cheerio": "1.0.0-rc.12", @@ -109,7 +109,7 @@ "countries-and-timezones": "3.4.1", "countries-list": "3.1.0", "countup.js": "2.8.0", - "date-fns": "2.29.3", + "date-fns": "3.6.0", "envalid": "7.3.1", "google-spreadsheet": "3.2.0", "got": "11.8.6", @@ -118,95 +118,96 @@ "ionicons": "7.4.0", "jsonpath": "1.1.1", "lodash": "4.17.21", - "marked": "9.1.6", + "marked": "12.0.2", "ms": "3.0.0-canary.1", "ng-extract-i18n-merge": "2.12.0", - "ngx-device-detector": "5.0.1", - "ngx-markdown": "17.1.1", + "ngx-device-detector": "8.0.0", + "ngx-markdown": "18.0.0", "ngx-skeleton-loader": "7.0.0", - "ngx-stripe": "15.5.0", + "ngx-stripe": "18.0.0", + "open-color": "1.9.1", "papaparse": "5.3.1", "passport": "0.7.0", "passport-google-oauth20": "2.0.0", "passport-jwt": "4.0.1", - "prisma": "5.14.0", + "prisma": "5.18.0", "reflect-metadata": "0.1.13", "rxjs": "7.5.6", - "stripe": "11.12.0", + "stripe": "15.11.0", "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", "uuid": "9.0.1", "yahoo-finance2": "2.11.3", - "zone.js": "0.14.5" + "zone.js": "0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "17.3.8", - "@angular-devkit/core": "17.3.8", - "@angular-devkit/schematics": "17.3.8", - "@angular-eslint/eslint-plugin": "17.5.1", - "@angular-eslint/eslint-plugin-template": "17.5.1", - "@angular-eslint/template-parser": "17.5.1", - "@angular/cli": "17.3.8", - "@angular/compiler-cli": "17.3.10", - "@angular/language-service": "17.3.10", - "@angular/localize": "17.3.10", - "@angular/pwa": "17.3.8", + "@angular-devkit/build-angular": "18.1.1", + "@angular-devkit/core": "18.1.1", + "@angular-devkit/schematics": "18.1.1", + "@angular-eslint/eslint-plugin": "18.1.0", + "@angular-eslint/eslint-plugin-template": "18.1.0", + "@angular-eslint/template-parser": "18.1.0", + "@angular/cli": "18.1.1", + "@angular/compiler-cli": "18.1.1", + "@angular/language-service": "18.1.1", + "@angular/localize": "18.1.1", + "@angular/pwa": "18.1.1", "@nestjs/schematics": "10.0.1", "@nestjs/testing": "10.1.3", - "@nx/angular": "19.0.5", - "@nx/cypress": "19.0.5", - "@nx/eslint-plugin": "19.0.5", - "@nx/jest": "19.0.5", - "@nx/js": "19.0.5", - "@nx/nest": "19.0.5", - "@nx/node": "19.0.5", - "@nx/storybook": "19.0.5", - "@nx/web": "19.0.5", - "@nx/workspace": "19.0.5", - "@schematics/angular": "17.3.3", + "@nx/angular": "19.5.6", + "@nx/cypress": "19.5.6", + "@nx/eslint-plugin": "19.5.6", + "@nx/jest": "19.5.6", + "@nx/js": "19.5.6", + "@nx/nest": "19.5.6", + "@nx/node": "19.5.6", + "@nx/storybook": "19.5.6", + "@nx/web": "19.5.6", + "@nx/workspace": "19.5.6", + "@schematics/angular": "18.1.1", "@simplewebauthn/types": "9.0.1", - "@storybook/addon-essentials": "7.5.3", - "@storybook/angular": "7.5.3", - "@storybook/core-server": "7.5.3", + "@storybook/addon-essentials": "8.2.6", + "@storybook/angular": "8.2.6", + "@storybook/core-server": "8.2.6", "@trivago/prettier-plugin-sort-imports": "4.3.0", "@types/big.js": "6.2.2", "@types/body-parser": "1.19.5", "@types/cache-manager": "3.4.2", - "@types/color": "3.0.3", + "@types/color": "3.0.6", "@types/google-spreadsheet": "3.1.5", "@types/jest": "29.4.4", - "@types/lodash": "4.17.0", - "@types/node": "^18.16.9", + "@types/lodash": "4.17.7", + "@types/node": "20.14.10", "@types/papaparse": "5.3.7", "@types/passport-google-oauth20": "2.0.16", "@typescript-eslint/eslint-plugin": "6.21.0", "@typescript-eslint/parser": "6.21.0", "codelyzer": "6.0.1", "cypress": "6.2.1", - "eslint": "8.56.0", + "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-cypress": "2.15.1", "eslint-plugin-import": "2.29.1", "eslint-plugin-storybook": "0.6.15", - "jest": "29.4.3", - "jest-environment-jsdom": "29.4.3", - "jest-preset-angular": "14.0.3", - "nx": "19.0.5", - "prettier": "3.2.5", + "jest": "29.7.0", + "jest-environment-jsdom": "29.7.0", + "jest-preset-angular": "14.1.0", + "nx": "19.5.6", + "prettier": "3.3.3", "prettier-plugin-organize-attributes": "1.0.0", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "7.0.1", "shx": "0.3.4", - "storybook": "7.0.9", + "storybook": "8.2.6", "ts-jest": "29.1.0", - "ts-node": "10.9.1", + "ts-node": "10.9.2", "tslib": "2.6.0", - "typescript": "5.4.4", + "typescript": "5.5.3", "webpack-bundle-analyzer": "4.10.1" }, "engines": { - "node": ">=18" + "node": ">=20" }, "prisma": { "seed": "node prisma/seed.js" diff --git a/prisma/migrations/20240607122659_added_holdings_to_symbol_profile/migration.sql b/prisma/migrations/20240607122659_added_holdings_to_symbol_profile/migration.sql new file mode 100644 index 000000000..8280fe589 --- /dev/null +++ b/prisma/migrations/20240607122659_added_holdings_to_symbol_profile/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "SymbolProfile" ADD COLUMN "holdings" JSONB DEFAULT '[]'; + +-- AlterTable +ALTER TABLE "SymbolProfileOverrides" ADD COLUMN "holdings" JSONB DEFAULT '[]'; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 62962739f..b62f91493 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,7 +1,7 @@ generator client { provider = "prisma-client-js" previewFeatures = [] - binaryTargets = ["debian-openssl-1.1.x", "linux-arm64-openssl-3.0.x", "native"] + binaryTargets = ["debian-openssl-3.0.x", "linux-arm64-openssl-3.0.x", "native"] } datasource db { @@ -164,6 +164,7 @@ model SymbolProfile { figi String? figiComposite String? figiShareClass String? + holdings Json? @default("[]") id String @id @default(uuid()) isin String? name String? @@ -190,6 +191,7 @@ model SymbolProfileOverrides { assetClass AssetClass? assetSubClass AssetSubClass? countries Json? @default("[]") + holdings Json? @default("[]") name String? sectors Json? @default("[]") url String? diff --git a/test/import/invalid-date-before-min.json b/test/import/invalid-date-before-min.json new file mode 100644 index 000000000..3040581b2 --- /dev/null +++ b/test/import/invalid-date-before-min.json @@ -0,0 +1,18 @@ +{ + "meta": { + "date": "2021-01-01T00:00:00.000Z", + "version": "dev" + }, + "activities": [ + { + "currency": "USD", + "dataSource": "YAHOO", + "date": "1960-01-01T00:00:00.000Z", + "fee": 0, + "quantity": 20, + "symbol": "AAPL", + "type": "BUY", + "unitPrice": 100.0 + } + ] +} diff --git a/test/import/ok-derived-currency.json b/test/import/ok-derived-currency.json new file mode 100644 index 000000000..b43be395d --- /dev/null +++ b/test/import/ok-derived-currency.json @@ -0,0 +1,30 @@ +{ + "meta": { + "date": "2024-06-28T00:00:00.000Z", + "version": "dev" + }, + "accounts": [ + { + "balance": 2000, + "currency": "USD", + "id": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", + "isExcluded": false, + "name": "My Online Trading Account", + "platformId": null + } + ], + "activities": [ + { + "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", + "comment": null, + "fee": 0, + "quantity": 5, + "type": "BUY", + "unitPrice": 10875.00, + "currency": "ZAc", + "dataSource": "YAHOO", + "date": "2024-06-27T22:00:00.000Z", + "symbol": "JSE.JO" + } + ] +} diff --git a/yarn.lock b/yarn.lock index 5575fd431..fe2f93639 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,398 +3,373 @@ "@adobe/css-tools@^4.0.1": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" - integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== + "integrity" "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==" + "resolved" "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz" + "version" "4.3.3" -"@ampproject/remapping@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== +"@ampproject/remapping@^2.2.0", "@ampproject/remapping@2.3.0": + "integrity" "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==" + "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" + "version" "2.3.0" dependencies: "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@angular-devkit/architect@0.1703.8": - version "0.1703.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1703.8.tgz#2b4f26d9e32ac013931631876b4a7a6926657ad3" - integrity sha512-lKxwG4/QABXZvJpqeSIn/kAwnY6MM9HdHZUV+o5o3UiTi+vO8rZApG4CCaITH3Bxebm7Nam7Xbk8RuukC5rq6g== - dependencies: - "@angular-devkit/core" "17.3.8" - rxjs "7.8.1" - "@angular-devkit/architect@^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0": - version "0.1800.2" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1800.2.tgz#c4bc51e654558c7e7d27e0558b671d6731d46ccf" - integrity sha512-PX7lCTAqWe9C40+fie+DAc8vhpGA+JgZKWWrMHUTV/iZx8RXx2X4xGQsqYu36p4i3MSfQdbn+0xLWGmjScPVOQ== + "integrity" "sha512-PX7lCTAqWe9C40+fie+DAc8vhpGA+JgZKWWrMHUTV/iZx8RXx2X4xGQsqYu36p4i3MSfQdbn+0xLWGmjScPVOQ==" + "resolved" "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1800.2.tgz" + "version" "0.1800.2" dependencies: "@angular-devkit/core" "18.0.2" - rxjs "7.8.1" + "rxjs" "7.8.1" -"@angular-devkit/build-angular@17.3.8": - version "17.3.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-17.3.8.tgz#a19f05909551f79b95711235b1141f83f96fd558" - integrity sha512-ixsdXggWaFRP7Jvxd0AMukImnePuGflT9Yy7NJ9/y0cL/k//S/3RnkQv5i411KzN+7D4RIbNkRGGTYeqH24zlg== +"@angular-devkit/architect@>=0.1500.0 < 0.1900.0", "@angular-devkit/architect@0.1801.1": + "integrity" "sha512-7dIQ++D5PTzLgs4sEvi7pMpG4nY4CTnzLKbqKDI++fJKa7FEpVjje1tsr1r8ap8xD0QXr6sIxmQ4hdLeWwPhDQ==" + "resolved" "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1801.1.tgz" + "version" "0.1801.1" + dependencies: + "@angular-devkit/core" "18.1.1" + "rxjs" "7.8.1" + +"@angular-devkit/build-angular@^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "@angular-devkit/build-angular@>= 16.0.0 < 19.0.0", "@angular-devkit/build-angular@>=15.0.0 < 19.0.0", "@angular-devkit/build-angular@>=15.0.0 <19.0.0", "@angular-devkit/build-angular@18.1.1": + "integrity" "sha512-sd/eOzitC8yN9xl/TbbuDxXL1LRZCX3gwKAddV1fJSrXJHEmDM7PhdQbNEPd2O58evMKSiMZK91WnYN0lhTZtw==" + "resolved" "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.1.1.tgz" + "version" "18.1.1" dependencies: "@ampproject/remapping" "2.3.0" - "@angular-devkit/architect" "0.1703.8" - "@angular-devkit/build-webpack" "0.1703.8" - "@angular-devkit/core" "17.3.8" - "@babel/core" "7.24.0" - "@babel/generator" "7.23.6" - "@babel/helper-annotate-as-pure" "7.22.5" - "@babel/helper-split-export-declaration" "7.22.6" - "@babel/plugin-transform-async-generator-functions" "7.23.9" - "@babel/plugin-transform-async-to-generator" "7.23.3" - "@babel/plugin-transform-runtime" "7.24.0" - "@babel/preset-env" "7.24.0" - "@babel/runtime" "7.24.0" + "@angular-devkit/architect" "0.1801.1" + "@angular-devkit/build-webpack" "0.1801.1" + "@angular-devkit/core" "18.1.1" + "@angular/build" "18.1.1" + "@babel/core" "7.24.7" + "@babel/generator" "7.24.7" + "@babel/helper-annotate-as-pure" "7.24.7" + "@babel/helper-split-export-declaration" "7.24.7" + "@babel/plugin-transform-async-generator-functions" "7.24.7" + "@babel/plugin-transform-async-to-generator" "7.24.7" + "@babel/plugin-transform-runtime" "7.24.7" + "@babel/preset-env" "7.24.7" + "@babel/runtime" "7.24.7" "@discoveryjs/json-ext" "0.5.7" - "@ngtools/webpack" "17.3.8" + "@ngtools/webpack" "18.1.1" "@vitejs/plugin-basic-ssl" "1.1.0" - ansi-colors "4.1.3" - autoprefixer "10.4.18" - babel-loader "9.1.3" - babel-plugin-istanbul "6.1.1" - browserslist "^4.21.5" - copy-webpack-plugin "11.0.0" - critters "0.0.22" - css-loader "6.10.0" - esbuild-wasm "0.20.1" - fast-glob "3.3.2" - http-proxy-middleware "2.0.6" - https-proxy-agent "7.0.4" - inquirer "9.2.15" - jsonc-parser "3.2.1" - karma-source-map-support "1.4.0" - less "4.2.0" - less-loader "11.1.0" - license-webpack-plugin "4.0.2" - loader-utils "3.2.1" - magic-string "0.30.8" - mini-css-extract-plugin "2.8.1" - mrmime "2.0.0" - open "8.4.2" - ora "5.4.1" - parse5-html-rewriting-stream "7.0.0" - picomatch "4.0.1" - piscina "4.4.0" - postcss "8.4.35" - postcss-loader "8.1.1" - resolve-url-loader "5.0.0" - rxjs "7.8.1" - sass "1.71.1" - sass-loader "14.1.1" - semver "7.6.0" - source-map-loader "5.0.0" - source-map-support "0.5.21" - terser "5.29.1" - tree-kill "1.2.2" - tslib "2.6.2" - undici "6.11.1" - vite "5.1.7" - watchpack "2.4.0" - webpack "5.90.3" - webpack-dev-middleware "6.1.2" - webpack-dev-server "4.15.1" - webpack-merge "5.10.0" - webpack-subresource-integrity "5.1.0" + "ansi-colors" "4.1.3" + "autoprefixer" "10.4.19" + "babel-loader" "9.1.3" + "browserslist" "^4.21.5" + "copy-webpack-plugin" "12.0.2" + "critters" "0.0.24" + "css-loader" "7.1.2" + "esbuild-wasm" "0.21.5" + "fast-glob" "3.3.2" + "http-proxy-middleware" "3.0.0" + "https-proxy-agent" "7.0.5" + "istanbul-lib-instrument" "6.0.2" + "jsonc-parser" "3.3.1" + "karma-source-map-support" "1.4.0" + "less" "4.2.0" + "less-loader" "12.2.0" + "license-webpack-plugin" "4.0.2" + "loader-utils" "3.3.1" + "magic-string" "0.30.10" + "mini-css-extract-plugin" "2.9.0" + "mrmime" "2.0.0" + "open" "10.1.0" + "ora" "5.4.1" + "parse5-html-rewriting-stream" "7.0.0" + "picomatch" "4.0.2" + "piscina" "4.6.1" + "postcss" "8.4.38" + "postcss-loader" "8.1.1" + "resolve-url-loader" "5.0.0" + "rxjs" "7.8.1" + "sass" "1.77.6" + "sass-loader" "14.2.1" + "semver" "7.6.2" + "source-map-loader" "5.0.0" + "source-map-support" "0.5.21" + "terser" "5.29.2" + "tree-kill" "1.2.2" + "tslib" "2.6.3" + "undici" "6.19.2" + "vite" "5.3.2" + "watchpack" "2.4.1" + "webpack" "5.92.1" + "webpack-dev-middleware" "7.2.1" + "webpack-dev-server" "5.0.4" + "webpack-merge" "5.10.0" + "webpack-subresource-integrity" "5.1.0" optionalDependencies: - esbuild "0.20.1" - -"@angular-devkit/build-webpack@0.1703.8": - version "0.1703.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1703.8.tgz#d157a5790d5045dd9c312936c3907bd3a184bbfc" - integrity sha512-9u6fl8VVOxcLOEMzrUeaybSvi9hSLSRucHnybneYrabsgreDo32tuy/4G8p6YAHQjpWEj9jvF9Um13ertdni5Q== - dependencies: - "@angular-devkit/architect" "0.1703.8" - rxjs "7.8.1" + "esbuild" "0.21.5" + +"@angular-devkit/build-webpack@0.1801.1": + "integrity" "sha512-9qImQciytrf433+h1aAWMD/Qn9cx7amlLtHX9j6ToBMWxY3L9ZKzwlCZ3Q+d6VWs7QrN/X9j8VkJl913yuXeCQ==" + "resolved" "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1801.1.tgz" + "version" "0.1801.1" + dependencies: + "@angular-devkit/architect" "0.1801.1" + "rxjs" "7.8.1" + +"@angular-devkit/core@^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "@angular-devkit/core@18.0.2": + "integrity" "sha512-QXcEdfmODc0rKblBerk30yw70fypIkFm6gQBLJgsshpwc+TMA+fuMLcPQebOTzKLtD2tNUkk/7SrWPQIGqeXaA==" + "resolved" "https://registry.npmjs.org/@angular-devkit/core/-/core-18.0.2.tgz" + "version" "18.0.2" + dependencies: + "ajv" "8.13.0" + "ajv-formats" "3.0.1" + "jsonc-parser" "3.2.1" + "picomatch" "4.0.2" + "rxjs" "7.8.1" + "source-map" "0.7.4" + +"@angular-devkit/core@>= 16.0.0 < 19.0.0", "@angular-devkit/core@>=15.0.0 < 19.0.0", "@angular-devkit/core@18.1.1": + "integrity" "sha512-YFzn/+8LezX7ZJhMQisvrqfkxJm6+JOtbWFj8K/luK0rTDmE8Z9n9r6kJ36FnHcLJ5MvvVaBc7n1v1wnzdqXpg==" + "resolved" "https://registry.npmjs.org/@angular-devkit/core/-/core-18.1.1.tgz" + "version" "18.1.1" + dependencies: + "ajv" "8.16.0" + "ajv-formats" "3.0.1" + "jsonc-parser" "3.3.1" + "picomatch" "4.0.2" + "rxjs" "7.8.1" + "source-map" "0.7.4" "@angular-devkit/core@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-16.0.1.tgz#1af4177d503d8d1babdf29c95d8901660a557243" - integrity sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w== + "integrity" "sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==" + "resolved" "https://registry.npmjs.org/@angular-devkit/core/-/core-16.0.1.tgz" + "version" "16.0.1" dependencies: - ajv "8.12.0" - ajv-formats "2.1.1" - jsonc-parser "3.2.0" - rxjs "7.8.1" - source-map "0.7.4" + "ajv" "8.12.0" + "ajv-formats" "2.1.1" + "jsonc-parser" "3.2.0" + "rxjs" "7.8.1" + "source-map" "0.7.4" "@angular-devkit/core@16.1.0": - version "16.1.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-16.1.0.tgz#cb56b19e88fc936fb0b26c5ae62591f1e8906961" - integrity sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q== - dependencies: - ajv "8.12.0" - ajv-formats "2.1.1" - jsonc-parser "3.2.0" - rxjs "7.8.1" - source-map "0.7.4" - -"@angular-devkit/core@17.3.3": - version "17.3.3" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-17.3.3.tgz#dce2f615355b2ef59c19927d90620670a6c890d0" - integrity sha512-J22Sh3M7rj8Ar3iEs20ko5wgC3DE7vWfYZNdimt2IJiS4J7BEX8R3Awf+TRt+6AN3NFm3/xe1Sz4yvDh3FvNFg== - dependencies: - ajv "8.12.0" - ajv-formats "2.1.1" - jsonc-parser "3.2.1" - picomatch "4.0.1" - rxjs "7.8.1" - source-map "0.7.4" - -"@angular-devkit/core@17.3.8": - version "17.3.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-17.3.8.tgz#8679cacf84cf79764f027811020e235ab32016d2" - integrity sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q== - dependencies: - ajv "8.12.0" - ajv-formats "2.1.1" - jsonc-parser "3.2.1" - picomatch "4.0.1" - rxjs "7.8.1" - source-map "0.7.4" - -"@angular-devkit/core@18.0.2", "@angular-devkit/core@^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0": - version "18.0.2" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-18.0.2.tgz#6757af88d6d433b75392e124b50fa990466d02b2" - integrity sha512-QXcEdfmODc0rKblBerk30yw70fypIkFm6gQBLJgsshpwc+TMA+fuMLcPQebOTzKLtD2tNUkk/7SrWPQIGqeXaA== - dependencies: - ajv "8.13.0" - ajv-formats "3.0.1" - jsonc-parser "3.2.1" - picomatch "4.0.2" - rxjs "7.8.1" - source-map "0.7.4" + "integrity" "sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q==" + "resolved" "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.0.tgz" + "version" "16.1.0" + dependencies: + "ajv" "8.12.0" + "ajv-formats" "2.1.1" + "jsonc-parser" "3.2.0" + "rxjs" "7.8.1" + "source-map" "0.7.4" + +"@angular-devkit/schematics@^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "@angular-devkit/schematics@>= 16.0.0 < 19.0.0", "@angular-devkit/schematics@18.1.1": + "integrity" "sha512-r+DAvVvv+hOuhh19PefPOKa/zDkvzLHz/YOLGq/k1KfJRtNtjCKiDsXp1s6HSzYdJD1H10wnzUIh48uvxfwH5Q==" + "resolved" "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.1.1.tgz" + "version" "18.1.1" + dependencies: + "@angular-devkit/core" "18.1.1" + "jsonc-parser" "3.3.1" + "magic-string" "0.30.10" + "ora" "5.4.1" + "rxjs" "7.8.1" "@angular-devkit/schematics@16.0.1": - version "16.0.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-16.0.1.tgz#d49387e9e41c9cce98b155da51b0e193333dd178" - integrity sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g== + "integrity" "sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==" + "resolved" "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.0.1.tgz" + "version" "16.0.1" dependencies: "@angular-devkit/core" "16.0.1" - jsonc-parser "3.2.0" - magic-string "0.30.0" - ora "5.4.1" - rxjs "7.8.1" + "jsonc-parser" "3.2.0" + "magic-string" "0.30.0" + "ora" "5.4.1" + "rxjs" "7.8.1" "@angular-devkit/schematics@16.1.0": - version "16.1.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-16.1.0.tgz#a0235ba402c9dfb38b7dedbf59bbcda667e8ec2f" - integrity sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A== + "integrity" "sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A==" + "resolved" "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.0.tgz" + "version" "16.1.0" dependencies: "@angular-devkit/core" "16.1.0" - jsonc-parser "3.2.0" - magic-string "0.30.0" - ora "5.4.1" - rxjs "7.8.1" - -"@angular-devkit/schematics@17.3.3": - version "17.3.3" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-17.3.3.tgz#223d8ffd27e6daaf63a3161dbe8c849860541bf1" - integrity sha512-SABqTtj2im4PJhQjNaAsSypbNkpZFW8YozJ3P748tlh5a9XoHpgiqXv5JhRbyKElLDAyk5i9fe2++JmSudPG/Q== - dependencies: - "@angular-devkit/core" "17.3.3" - jsonc-parser "3.2.1" - magic-string "0.30.8" - ora "5.4.1" - rxjs "7.8.1" - -"@angular-devkit/schematics@17.3.7": - version "17.3.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-17.3.7.tgz#0b964b9216d51e7706656fdc0643fd9716461902" - integrity sha512-d7NKSwstdxYLYmPsbcYO3GOFNfXxXwOyHxSqDa1JNKoSzMdbLj4tvlCpfXw0ThNM7gioMx8aLBaaH1ac+yk06Q== - dependencies: - "@angular-devkit/core" "17.3.7" - jsonc-parser "3.2.1" - magic-string "0.30.8" - ora "5.4.1" - rxjs "7.8.1" - -"@angular-devkit/schematics@17.3.8", "@angular-devkit/schematics@^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0": - version "17.3.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-17.3.8.tgz#f853eb21682aadfb6667e090b5b509fc95ce8442" - integrity sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg== - dependencies: - "@angular-devkit/core" "17.3.8" - jsonc-parser "3.2.1" - magic-string "0.30.8" - ora "5.4.1" - rxjs "7.8.1" - -"@angular-devkit/schematics@18.0.2", "@angular-devkit/schematics@^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0": - version "18.0.2" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-18.0.2.tgz#9795a79f4de2f622c388fe074153f8abb0ee22a4" - integrity sha512-G9yGcoB67sH0eRNWoiQWNn2KwiI7sDasVscYPGKf1yo7JRiXmzX/LpfKRPsZTl+Bs0FItnwDInsqgMisK89/6g== + "jsonc-parser" "3.2.0" + "magic-string" "0.30.0" + "ora" "5.4.1" + "rxjs" "7.8.1" + +"@angular-eslint/bundled-angular-compiler@18.1.0": + "integrity" "sha512-2JNlMEnCvLz8q1Qa4sWR9BddtpDWMKYguMzHJKm5zUDwH90CgWHolQlXumtpqbL8r78xd57t35IkbEFLF3UsQw==" + "resolved" "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.1.0.tgz" + "version" "18.1.0" + +"@angular-eslint/eslint-plugin-template@18.1.0": + "integrity" "sha512-k7Zq2JRd4jjg6PB0M24UnnmdhCeRFQ7Q4GlMGmeJLQGan+HFKDBu973yN2/Vmk4RYi+rTVuin0gy4HBeiGiiaw==" + "resolved" "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.1.0.tgz" + "version" "18.1.0" dependencies: - "@angular-devkit/core" "18.0.2" - jsonc-parser "3.2.1" - magic-string "0.30.10" - ora "5.4.1" - rxjs "7.8.1" - -"@angular-eslint/bundled-angular-compiler@17.5.1": - version "17.5.1" - resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.5.1.tgz#21017c29486bf2f0f83501fb034dd0ff0a2c173e" - integrity sha512-2gYFcWsGcw3BytCzt6DzKNayOHhW1dhMAgttor94lXLYOYN82eLGomC+aZF/U6fqVGBjm5JIEJpWbNF+NawZ7w== - -"@angular-eslint/eslint-plugin-template@17.5.1": - version "17.5.1" - resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-17.5.1.tgz#72a07db87698aec0277b463bf3630b040f97af39" - integrity sha512-OgTN6ogZSA7Fi/9Zfk3EZumr06MZPXyI7Y9A09WzkjgUikCXDNoYwvkT4Bh0jOtwDDhtAAFC9/TehJQj7f4o5A== - dependencies: - "@angular-eslint/bundled-angular-compiler" "17.5.1" - "@angular-eslint/utils" "17.5.1" - "@typescript-eslint/type-utils" "7.10.0" - "@typescript-eslint/utils" "7.10.0" - aria-query "5.3.0" - axobject-query "4.0.0" - -"@angular-eslint/eslint-plugin@17.5.1": - version "17.5.1" - resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-17.5.1.tgz#e2814427d388bfcfa66dc950aeef74af5988be33" - integrity sha512-6/BLBJatp4DK9XtiVIh3UGIkZkikmtnV3tSvxtxG0LR1/zY+iWZIyQlmoJ42jRh3F0L46lmb14Z0iaIsPXuRGQ== - dependencies: - "@angular-eslint/bundled-angular-compiler" "17.5.1" - "@angular-eslint/utils" "17.5.1" - "@typescript-eslint/utils" "7.10.0" - -"@angular-eslint/template-parser@17.5.1": - version "17.5.1" - resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-17.5.1.tgz#fcb888b569d547d44fec24ced8a269521e8096c0" - integrity sha512-DJcYacYEb17uUlQFYIKSjmlzWJEfev5pOMddDewV3h6oVm4T77X1SH/u8n5Oz1Zy13TrLWponwFORCKhg7nOfg== - dependencies: - "@angular-eslint/bundled-angular-compiler" "17.5.1" - eslint-scope "^8.0.0" - -"@angular-eslint/utils@17.5.1": - version "17.5.1" - resolved "https://registry.yarnpkg.com/@angular-eslint/utils/-/utils-17.5.1.tgz#c6c02caa80879af8cffbdeaecd532a04a77c38d8" - integrity sha512-Rji1fC9OLDzRaeM2Aven0HdEnqaIgLn5cD6JQphTi1o4TzIXAcSrB9g52dVkH3RnqtOGYSIfFpA6+lQfn7wLOA== - dependencies: - "@angular-eslint/bundled-angular-compiler" "17.5.1" - "@typescript-eslint/utils" "7.10.0" - -"@angular/animations@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-17.3.10.tgz#f62a728f078a586da27a36c931abb59fc7beb14e" - integrity sha512-9fR5snTuG4aM2K54TG/6DXcKXMDKZMovZhjQOxO8l68/oqn6fKrHs8DLzckFs0XGRZ+2OyURH8WggFm1Z828rA== - dependencies: - tslib "^2.3.0" - -"@angular/cdk@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-17.3.10.tgz#4a3bab529cd65bb19cb89c89b3548dcc534d1a44" - integrity sha512-b1qktT2c1TTTe5nTji/kFAVW92fULK0YhYAvJ+BjZTPKu2FniZNe8o4qqQ0pUuvtMu+ZQxp/QqFYoidIVCjScg== - dependencies: - tslib "^2.3.0" - optionalDependencies: - parse5 "^7.1.2" + "@angular-eslint/bundled-angular-compiler" "18.1.0" + "@angular-eslint/utils" "18.1.0" + "aria-query" "5.3.0" + "axobject-query" "4.0.0" + +"@angular-eslint/eslint-plugin@18.1.0": + "integrity" "sha512-rV1RLhcg9TTNE5hB7pMddkJvnH0+q3FnhhWVE+IJNkzlGxEktDwVx7hG17sy8YkRS2CxR0P6Dr5C6wMBdEwAsw==" + "resolved" "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.1.0.tgz" + "version" "18.1.0" + dependencies: + "@angular-eslint/bundled-angular-compiler" "18.1.0" + "@angular-eslint/utils" "18.1.0" -"@angular/cli@17.3.8": - version "17.3.8" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-17.3.8.tgz#3673fd5dd4fbc96a6ed57c4e871ac5a92d5702c7" - integrity sha512-X5ZOQ6ZTKVHjhIsfl32ZRqbs+FUoeHLbT7x4fh2Os/8ObDDwrUcCJPqxe2b2RB5E2d0vepYigknHeLE7gwzlNQ== +"@angular-eslint/template-parser@18.1.0": + "integrity" "sha512-YqBNusbt3vWbm8eo2dICytU8hP8/ez4uETkwKpMvB+H1E0rYaD2F17D47YO9BBFUHCNzAGIBlA8BWDN1kLEMlw==" + "resolved" "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.1.0.tgz" + "version" "18.1.0" dependencies: - "@angular-devkit/architect" "0.1703.8" - "@angular-devkit/core" "17.3.8" - "@angular-devkit/schematics" "17.3.8" - "@schematics/angular" "17.3.8" + "@angular-eslint/bundled-angular-compiler" "18.1.0" + "eslint-scope" "^8.0.0" + +"@angular-eslint/utils@18.1.0": + "integrity" "sha512-pTCwbm9TPU1B0fxwhJg5qnJA2ILUJR0cT+rc7kejV0Xwl6RBXpMrzbuMzB9CucEY1au8hAR55I+Sc9znwSwuIw==" + "resolved" "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.1.0.tgz" + "version" "18.1.0" + dependencies: + "@angular-eslint/bundled-angular-compiler" "18.1.0" + +"@angular/animations@^18.0.0 || ^19.0.0", "@angular/animations@18.1.1": + "integrity" "sha512-3BdB6lB7TT1BQFb8C3XyJ5A9YSrOx951NzcXnzFfTNiq1C+VeR455LtdNiDTPa9Vf5Df1cJb6ReJ1z17ztx+6Q==" + "resolved" "https://registry.npmjs.org/@angular/animations/-/animations-18.1.1.tgz" + "version" "18.1.1" + dependencies: + "tslib" "^2.3.0" + +"@angular/build@18.1.1": + "integrity" "sha512-DbgFqpaZE6g8VZaPboB54cVuERlZV6SAkNPEaMT/53cnCxL4QdSQs1aT9Wy8G1Ksr4WI5AZMdPic/TVF0KBGGQ==" + "resolved" "https://registry.npmjs.org/@angular/build/-/build-18.1.1.tgz" + "version" "18.1.1" + dependencies: + "@ampproject/remapping" "2.3.0" + "@angular-devkit/architect" "0.1801.1" + "@babel/core" "7.24.7" + "@babel/helper-annotate-as-pure" "7.24.7" + "@babel/helper-split-export-declaration" "7.24.7" + "@babel/plugin-syntax-import-attributes" "7.24.7" + "@inquirer/confirm" "3.1.11" + "@vitejs/plugin-basic-ssl" "1.1.0" + "ansi-colors" "4.1.3" + "browserslist" "^4.23.0" + "critters" "0.0.24" + "esbuild" "0.21.5" + "fast-glob" "3.3.2" + "https-proxy-agent" "7.0.5" + "lmdb" "3.0.12" + "magic-string" "0.30.10" + "mrmime" "2.0.0" + "ora" "5.4.1" + "parse5-html-rewriting-stream" "7.0.0" + "picomatch" "4.0.2" + "piscina" "4.6.1" + "rollup" "4.18.0" + "sass" "1.77.6" + "semver" "7.6.2" + "undici" "6.19.2" + "vite" "5.3.2" + "watchpack" "2.4.1" + +"@angular/cdk@18.1.1": + "integrity" "sha512-IaDjvRUgAoKnEeafrnBX+hjTR+1M3O3fV3AybBCjN4NuiPtuyOJiTMg0cTv6RbluJ/SenbT4MQq3tMpOsa9i4w==" + "resolved" "https://registry.npmjs.org/@angular/cdk/-/cdk-18.1.1.tgz" + "version" "18.1.1" + dependencies: + "tslib" "^2.3.0" + optionalDependencies: + "parse5" "^7.1.2" + +"@angular/cli@^18.0.0", "@angular/cli@>=15.0.0 < 19.0.0", "@angular/cli@18.1.1": + "integrity" "sha512-sRmc5meBLRQgFKq6te1UM4JPHWPERrg1pjYStft/qRKkOyvgpNzq3Ol6hN3zNb2ds2bAgjKhEAlOwSOZuw1cqQ==" + "resolved" "https://registry.npmjs.org/@angular/cli/-/cli-18.1.1.tgz" + "version" "18.1.1" + dependencies: + "@angular-devkit/architect" "0.1801.1" + "@angular-devkit/core" "18.1.1" + "@angular-devkit/schematics" "18.1.1" + "@inquirer/prompts" "5.0.7" + "@listr2/prompt-adapter-inquirer" "2.0.13" + "@schematics/angular" "18.1.1" "@yarnpkg/lockfile" "1.1.0" - ansi-colors "4.1.3" - ini "4.1.2" - inquirer "9.2.15" - jsonc-parser "3.2.1" - npm-package-arg "11.0.1" - npm-pick-manifest "9.0.0" - open "8.4.2" - ora "5.4.1" - pacote "17.0.6" - resolve "1.22.8" - semver "7.6.0" - symbol-observable "4.0.0" - yargs "17.7.2" - -"@angular/common@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-17.3.10.tgz#bd395d94678eba5c4ea42c6bafd8f3151c8c5dc7" - integrity sha512-6SfD21M3LujymmZsZQIxAsV8Bj5u6He6ImZ+p2rr7FAhFxpVJyKldK8LCmJcFsBD4srpQcxEZ0iDxXvg+0ihAw== - dependencies: - tslib "^2.3.0" - -"@angular/compiler-cli@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-17.3.10.tgz#84a7ee6ac0ab9e924132589a788abfd656f671a6" - integrity sha512-85SBphqRj3szac3FbeYgEZ+I6WaAlo5h7JX06BdjOLLiaoIwlFhLeAuG+jVekseV+95grFUxIsCMphWHi2e6hQ== - dependencies: - "@babel/core" "7.23.9" + "ini" "4.1.3" + "jsonc-parser" "3.3.1" + "listr2" "8.2.3" + "npm-package-arg" "11.0.2" + "npm-pick-manifest" "9.0.1" + "pacote" "18.0.6" + "resolve" "1.22.8" + "semver" "7.6.2" + "symbol-observable" "4.0.0" + "yargs" "17.7.2" + +"@angular/common@^18.0.0", "@angular/common@^18.0.0 || ^19.0.0", "@angular/common@>=15.0.0 < 19.0.0", "@angular/common@>=18.0.0 <19.0.0", "@angular/common@>=8.0.0", "@angular/common@18.1.1": + "integrity" "sha512-qNfYAapvIi8JyQToSqbg3O5dRXaElv/yNp2evvBGn4UO/liHjdNV/DzgCdyKP7uVbYrR0W3bzj++SxVR3mrATQ==" + "resolved" "https://registry.npmjs.org/@angular/common/-/common-18.1.1.tgz" + "version" "18.1.1" + dependencies: + "tslib" "^2.3.0" + +"@angular/compiler-cli@^18.0.0", "@angular/compiler-cli@>=15.0.0 < 19.0.0", "@angular/compiler-cli@>=15.0.0 <19.0.0", "@angular/compiler-cli@18.1.1": + "integrity" "sha512-TMPrN4HLa5raxW133bY3AxH1Gar36nmy0ikttMeSotLSlC5Y4SCYaiMY7QaPytD1iEGvqAd/rP+YuXzOIuCM/w==" + "resolved" "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.1.1.tgz" + "version" "18.1.1" + dependencies: + "@babel/core" "7.24.7" "@jridgewell/sourcemap-codec" "^1.4.14" - chokidar "^3.0.0" - convert-source-map "^1.5.1" - reflect-metadata "^0.2.0" - semver "^7.0.0" - tslib "^2.3.0" - yargs "^17.2.1" + "chokidar" "^3.0.0" + "convert-source-map" "^1.5.1" + "reflect-metadata" "^0.2.0" + "semver" "^7.0.0" + "tslib" "^2.3.0" + "yargs" "^17.2.1" -"@angular/compiler@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-17.3.10.tgz#345bcdc4db45893fd0eca900181230c67499bd1d" - integrity sha512-6Ce4siHyF0fCZBDm/cz+blJByGDu1/hbPkQVGmk5HGZTmCUeKkgyjoM6bZr7ssAsyGDRwxBh2SGHO4Ce31vuPA== +"@angular/compiler@>=15.0.0 < 19.0.0", "@angular/compiler@18.1.1": + "integrity" "sha512-Nc2GZhXXi3O2otZIWgOJoGZ+88+R6YXGc70dibEpMvmDjKfYpc4pBjuYzaGntdiTYAzVOVTTv09dwTP6YOpPRA==" + "resolved" "https://registry.npmjs.org/@angular/compiler/-/compiler-18.1.1.tgz" + "version" "18.1.1" dependencies: - tslib "^2.3.0" + "tslib" "^2.3.0" "@angular/compiler@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.0.0.tgz#87e0bef4c369b6cadae07e3a4295778fc93799d5" - integrity sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ== + "integrity" "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==" + "resolved" "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz" + "version" "9.0.0" -"@angular/core@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-17.3.10.tgz#129cd916e718c668b84db1cd25d227fa1cf2645a" - integrity sha512-ocEKu7X0yFCOvgJn1uZy76qjhsjKvULrO1k/BuIX0nwhp61DTGYTvCqKmwCBLM8/gvcKYH5vMKMHoQKtiSGE0A== +"@angular/core@^18.0.0", "@angular/core@^18.0.0 || ^19.0.0", "@angular/core@>=15.0.0 < 19.0.0", "@angular/core@>=15.0.0 <19.0.0", "@angular/core@>=18.0.0 <19.0.0", "@angular/core@>=8.0.0", "@angular/core@18.1.1": + "integrity" "sha512-/JFQ49fVIthZzdggl7FOCYAjaynbkRcCyiri85kAyTIvJ6aMSIiEKwJCw45WI5ICf2HtC9kz6dr0OKhMR6SeiA==" + "resolved" "https://registry.npmjs.org/@angular/core/-/core-18.1.1.tgz" + "version" "18.1.1" dependencies: - tslib "^2.3.0" + "tslib" "^2.3.0" "@angular/core@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.0.0.tgz#227dc53e1ac81824f998c6e76000b7efc522641e" - integrity sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w== + "integrity" "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==" + "resolved" "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz" + "version" "9.0.0" -"@angular/forms@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-17.3.10.tgz#9559ac2eb9411236375b7517c7ef9d3251c8e3c3" - integrity sha512-0VZWSXDi2M3DAGJlpdV3lo73Yo/73GPRqmfTOrvIoUIenFg5Dz6oNGzvt/1aRkRn6HKccjix6iMpH91EN65pWA== +"@angular/forms@^18.0.0 || ^19.0.0", "@angular/forms@>=15.0.0 < 19.0.0", "@angular/forms@18.1.1": + "integrity" "sha512-CceH57IKeH2Zq8QFFkcJMvBbjxVRCtqzAqSETfShWzrt+ITrz4c6EnUMbj30iz+ntn/R+qGAp3n/t0D7HtTS6Q==" + "resolved" "https://registry.npmjs.org/@angular/forms/-/forms-18.1.1.tgz" + "version" "18.1.1" dependencies: - tslib "^2.3.0" + "tslib" "^2.3.0" -"@angular/language-service@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-17.3.10.tgz#935d0bcfc078fcabf685669b5d8a83229cf0b46f" - integrity sha512-6y0yEnjuKGCnH+YxmZZUC/KEb2ZuB5z7y0AOj4PwOladMWSwHv71x1rz5MokBVBf7ZTeN2w89f9jSWBzSz+fPw== +"@angular/language-service@18.1.1": + "integrity" "sha512-SK9mKBB+fWXBXgdDLPZQI/peHqeQLheseSUPhZQyARDR6CrUvhB7MSRWERhn8832fZ6BoCE01p1obsYLWeXNbw==" + "resolved" "https://registry.npmjs.org/@angular/language-service/-/language-service-18.1.1.tgz" + "version" "18.1.1" -"@angular/localize@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-17.3.10.tgz#607996330e524ab6a6575ff625671de4b231c559" - integrity sha512-B/r+jsYiuxm2llBsOE2rKomB5vSnTnICWcfooBDtDUAfTZNQIoSdPt2SAIbRN/c4GLZsiU53k0+jLl67HdtO2g== +"@angular/localize@^18.0.0", "@angular/localize@18.1.1": + "integrity" "sha512-KuUXPWq91XrSsYPvi0tVp+dlG2F+doxXN/FOg+RhUh3X4Qdxy93OWPTMmkWxJ6U9rbXFBKqxfd0+Vnt/BypMmg==" + "resolved" "https://registry.npmjs.org/@angular/localize/-/localize-18.1.1.tgz" + "version" "18.1.1" dependencies: - "@babel/core" "7.23.9" + "@babel/core" "7.24.7" "@types/babel__core" "7.20.5" - fast-glob "3.3.2" - yargs "^17.2.1" + "fast-glob" "3.3.2" + "yargs" "^17.2.1" -"@angular/material@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/material/-/material-17.3.10.tgz#db4c41bcc4ba6a6328be3d89dc95947a48555b54" - integrity sha512-hHMQES0tQPH5JW33W+mpBPuM8ybsloDTqFPuRV8cboDjosAWfJhzAKF3ozICpNlUrs62La/2Wu/756GcQrxebg== +"@angular/material@18.1.1": + "integrity" "sha512-9JdUEUZheMMk+Tu8oDLRdI2eXOeI9d2BjEZYkoDif4iB7TCldmcKJyTYXs3kSZz6B53vup/vgKJUPBHLkIDD+A==" + "resolved" "https://registry.npmjs.org/@angular/material/-/material-18.1.1.tgz" + "version" "18.1.1" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/auto-init" "15.0.0-canary.7f224ddd4.0" @@ -439,1330 +414,976 @@ "@material/tab-scroller" "15.0.0-canary.7f224ddd4.0" "@material/textfield" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" + "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/tooltip" "15.0.0-canary.7f224ddd4.0" "@material/top-app-bar" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.3.0" - -"@angular/platform-browser-dynamic@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.10.tgz#00fa7a90919f63e314ad1d687645e5a148084698" - integrity sha512-TW6G4+isdHM2ssQTRTobeAKtR2516pJ25BSwRb+9+Jw/ZAEYOOi+KQyofIFYQccaUjb3+LpjRcaZbtZ9m/Ispg== - dependencies: - tslib "^2.3.0" - -"@angular/platform-browser@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-17.3.10.tgz#7c513920fa8dbf52d0f70920101aad6ec71019d4" - integrity sha512-LEhBDOKm2A7nRmZqsafVp6OinRDG1OYZBSqjnT1jZ+f0CRRFIXz6aJ0TMPoU6vq9SLRJ7vrGD9P/eBf2hW00NQ== - dependencies: - tslib "^2.3.0" + "tslib" "^2.3.0" -"@angular/pwa@17.3.8": - version "17.3.8" - resolved "https://registry.yarnpkg.com/@angular/pwa/-/pwa-17.3.8.tgz#9bf5386d507c691a0b4e131071b703d22bba1641" - integrity sha512-NWp88mGEJWUhCaUFDdDMeen0Y81hxZoFNPX9/VaTQ5a2kNUjvQ08iI4ceJB89R4sQSMnmNr30c9Rovo1gS+RTw== +"@angular/platform-browser-dynamic@>=15.0.0 < 19.0.0", "@angular/platform-browser-dynamic@>=15.0.0 <19.0.0", "@angular/platform-browser-dynamic@18.1.1": + "integrity" "sha512-+nnWGLz7dhkRbel8qGIgfQa5PoE4ZMl0ClDw8HR0R5T3w+v0K6trPSjWIPDHm5ex25RvuLNmoUGu29drlHN3Fw==" + "resolved" "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.1.1.tgz" + "version" "18.1.1" dependencies: - "@angular-devkit/schematics" "17.3.8" - "@schematics/angular" "17.3.8" - parse5-html-rewriting-stream "7.0.0" + "tslib" "^2.3.0" -"@angular/router@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-17.3.10.tgz#4cbea96eb5a11ef011a4e4e31cecb7c3c72d8fce" - integrity sha512-HlZlR9BOLoEKGOSMjmL5EfYL7F7PeDifbFi0dYWNcrG8zFrVKFklB1cuBdJhfPZgYhDEoGms/EToD71tg5wliA== +"@angular/platform-browser@^18.0.0", "@angular/platform-browser@^18.0.0 || ^19.0.0", "@angular/platform-browser@>=15.0.0 < 19.0.0", "@angular/platform-browser@18.1.1": + "integrity" "sha512-9FG2+NSWJXo+zu/W7VQE0UpaWejbV62AXW7218FBZXOdkdID5oNxHf0QdJ3hCaIJw1dKZEG49BTq005d9yQbew==" + "resolved" "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.1.1.tgz" + "version" "18.1.1" dependencies: - tslib "^2.3.0" + "tslib" "^2.3.0" -"@angular/service-worker@17.3.10": - version "17.3.10" - resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-17.3.10.tgz#324d8e444e135899ecdd4ea404f0dc1ef89f0ecd" - integrity sha512-tRoO1WrA4TxLyQK4DFtant3R93DQuGs/DIvhYZ5Tpevaj8h/gL1Uwxzj3GAyZpMSbXvETlHAK8HcwG4IkXkxBg== +"@angular/pwa@18.1.1": + "integrity" "sha512-GFRpjUw1JfYdv+iJ2ImPk4eXpw79hQX/BjF0/hubZh1/LOEVAJnUi4Nyjlj9VqaxJY4/GVTyvE3fppOTnhmRsg==" + "resolved" "https://registry.npmjs.org/@angular/pwa/-/pwa-18.1.1.tgz" + "version" "18.1.1" dependencies: - tslib "^2.3.0" + "@angular-devkit/schematics" "18.1.1" + "@schematics/angular" "18.1.1" + "parse5-html-rewriting-stream" "7.0.0" -"@aw-web-design/x-default-browser@1.4.126": - version "1.4.126" - resolved "https://registry.yarnpkg.com/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz#43e4bd8f0314ed907a8718d7e862a203af79bc16" - integrity sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug== +"@angular/router@18.1.1": + "integrity" "sha512-XaPL+jzmanQa3y9JSMpyxcTqHTNLiGLW6yzcZ0hiKDRpCJ044cKLMK5Ruk84LfzvVDS//tGj46OYAwrPGmBFMg==" + "resolved" "https://registry.npmjs.org/@angular/router/-/router-18.1.1.tgz" + "version" "18.1.1" dependencies: - default-browser-id "3.0.0" + "tslib" "^2.3.0" -"@aw-web-design/x-default-browser@1.4.88": - version "1.4.88" - resolved "https://registry.yarnpkg.com/@aw-web-design/x-default-browser/-/x-default-browser-1.4.88.tgz#33d869cb2a537cd6d2a8369d4dc8ea4988d4be89" - integrity sha512-AkEmF0wcwYC2QkhK703Y83fxWARttIWXDmQN8+cof8FmFZ5BRhnNXGymeb1S73bOCLfWjYELxtujL56idCN/XA== +"@angular/service-worker@^18.0.0", "@angular/service-worker@18.1.1": + "integrity" "sha512-SCSWHns2tIYWs6duCVWOmQIOf6fVrqObkZ8ajpQ42vBLawpSgJsSew6E1yquMO6UDi/lph6ZRdTr5Vqt7CiboQ==" + "resolved" "https://registry.npmjs.org/@angular/service-worker/-/service-worker-18.1.1.tgz" + "version" "18.1.1" dependencies: - default-browser-id "3.0.0" + "tslib" "^2.3.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.24.7": + "integrity" "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/highlight" "^7.24.2" - picocolors "^1.0.0" + "@babel/highlight" "^7.24.7" + "picocolors" "^1.0.0" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7", "@babel/compat-data@^7.25.2": + "integrity" "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz" + "version" "7.25.4" -"@babel/core@7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.9", "@babel/core@^7.24.4", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8", "@babel/core@7.24.7": + "integrity" "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz" + "version" "7.24.7" dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/core@7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" - integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.0" - "@babel/parser" "^7.24.0" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.0" - "@babel/types" "^7.24.0" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.2", "@babel/core@^7.22.0", "@babel/core@^7.22.9", "@babel/core@^7.23.2", "@babel/core@^7.23.9": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/core@~7.21.0": - version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" - integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-compilation-targets" "^7.21.5" - "@babel/helper-module-transforms" "^7.21.5" - "@babel/helpers" "^7.21.5" - "@babel/parser" "^7.21.8" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/generator@7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" - integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== - dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.21.5", "@babel/generator@^7.22.9", "@babel/generator@^7.23.0", "@babel/generator@^7.23.6", "@babel/generator@^7.24.5", "@babel/generator@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helpers" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "convert-source-map" "^2.0.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.2.3" + "semver" "^6.3.1" + +"@babel/generator@^7.23.0": + "integrity" "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz" + "version" "7.24.5" dependencies: "@babel/types" "^7.24.5" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/generator@~7.21.1": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" - integrity sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg== - dependencies: - "@babel/types" "^7.21.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" + "jsesc" "^2.5.1" -"@babel/helper-annotate-as-pure@7.22.5", "@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== +"@babel/generator@^7.24.7", "@babel/generator@^7.7.2", "@babel/generator@7.24.7": + "integrity" "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" + "@babel/types" "^7.24.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + "jsesc" "^2.5.1" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/generator@^7.25.4": + "integrity" "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz" + "version" "7.25.5" dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" + "@babel/types" "^7.25.4" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + "jsesc" "^2.5.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" - integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.24.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-define-polyfill-provider@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" - integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== +"@babel/generator@7.17.7": + "integrity" "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz" + "version" "7.17.7" 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" + "@babel/types" "^7.17.0" + "jsesc" "^2.5.1" + "source-map" "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.24.7", "@babel/helper-annotate-as-pure@7.24.7": + "integrity" "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==" + "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + "integrity" "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==" + "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": + "integrity" "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz" + "version" "7.25.2" + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + "browserslist" "^4.23.1" + "lru-cache" "^5.1.1" + "semver" "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.5", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.4": + "integrity" "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz" + "version" "7.25.4" + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/traverse" "^7.25.4" + "semver" "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.2": + "integrity" "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz" + "version" "7.25.2" + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "regexpu-core" "^5.3.1" + "semver" "^6.3.1" "@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + "integrity" "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz" + "version" "0.6.2" 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" + "debug" "^4.1.1" + "lodash.debounce" "^4.0.8" + "resolve" "^1.14.2" -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5", "@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.24.7": + "integrity" "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/types" "^7.24.7" -"@babel/helper-function-name@^7.21.0", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== +"@babel/helper-function-name@^7.23.0": + "integrity" "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + "version" "7.23.0" dependencies: "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" -"@babel/helper-hoist-variables@^7.18.6", "@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== +"@babel/helper-hoist-variables@^7.22.5": + "integrity" "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + "version" "7.22.5" dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" - integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== +"@babel/helper-member-expression-to-functions@^7.24.8": + "integrity" "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz" + "version" "7.24.8" + dependencies: + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.8" + +"@babel/helper-module-imports@^7.24.7": + "integrity" "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0": + "integrity" "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz" + "version" "7.25.2" + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + +"@babel/helper-optimise-call-expression@^7.24.7": + "integrity" "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==" + "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + "integrity" "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz" + "version" "7.24.8" + +"@babel/helper-remap-async-to-generator@^7.24.7": + "integrity" "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==" + "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz" + "version" "7.25.0" + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-wrap-function" "^7.25.0" + "@babel/traverse" "^7.25.0" + +"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": + "integrity" "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz" + "version" "7.25.0" + dependencies: + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/traverse" "^7.25.0" + +"@babel/helper-simple-access@^7.24.7": + "integrity" "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + "integrity" "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-split-export-declaration@^7.22.6", "@babel/helper-split-export-declaration@7.24.7": + "integrity" "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.8": + "integrity" "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz" + "version" "7.24.8" + +"@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.24.7": + "integrity" "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz" + "version" "7.24.7" + +"@babel/helper-validator-option@^7.23.5", "@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": + "integrity" "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz" + "version" "7.24.8" + +"@babel/helper-wrap-function@^7.25.0": + "integrity" "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz" + "version" "7.25.0" + dependencies: + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/helpers@^7.24.7": + "integrity" "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz" + "version" "7.25.0" + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/highlight@^7.24.7": + "integrity" "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + "chalk" "^2.4.2" + "js-tokens" "^4.0.0" + "picocolors" "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.4": + "integrity" "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz" + "version" "7.25.4" dependencies: - "@babel/types" "^7.24.5" + "@babel/types" "^7.25.4" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": + "integrity" "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz" + "version" "7.25.3" + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.3" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": + "integrity" "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==" + "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.25.0.tgz" + "version" "7.25.0" + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-transforms@^7.21.5", "@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - -"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + "integrity" "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.18.6", "@babel/helper-split-export-declaration@^7.22.6", "@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-string-parser@^7.21.5", "@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.16.7", "@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-option@^7.21.0", "@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-wrap-function@^7.22.20": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" - integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== - dependencies: - "@babel/helper-function-name" "^7.23.0" - "@babel/template" "^7.24.0" - "@babel/types" "^7.24.5" - -"@babel/helpers@^7.21.5", "@babel/helpers@^7.23.9", "@babel/helpers@^7.24.0", "@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - -"@babel/highlight@^7.24.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.22.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== - -"@babel/parser@~7.21.2": - version "7.21.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" - integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" - integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.5" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-proposal-async-generator-functions@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" - integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": + "integrity" "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz" + "version" "7.25.0" + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.0" "@babel/plugin-proposal-decorators@^7.22.7": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" - integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== + "integrity" "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz" + "version" "7.24.1" dependencies: "@babel/helper-create-class-features-plugin" "^7.24.1" "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-decorators" "^7.24.1" -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" - integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" - integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-proposal-private-property-in-object@^7.21.0": - version "7.21.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" - integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.21.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "integrity" "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==" + "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" + "version" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + "version" "7.8.4" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + "version" "7.12.13" dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-decorators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" - integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== + "integrity" "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz" + "version" "7.24.1" dependencies: "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" - integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== +"@babel/plugin-syntax-flow@^7.24.7": + "integrity" "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-assertions@^7.20.0", "@babel/plugin-syntax-import-assertions@^7.23.3", "@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== +"@babel/plugin-syntax-import-assertions@^7.24.7": + "integrity" "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-attributes@^7.23.3", "@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@7.24.7": + "integrity" "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.24.1", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + "integrity" "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + "version" "7.10.4" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.24.1", "@babel/plugin-syntax-typescript@^7.3.3", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + "integrity" "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz" + "version" "7.25.4" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + "integrity" "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + "version" "7.18.6" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.21.5", "@babel/plugin-transform-arrow-functions@^7.23.3", "@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== +"@babel/plugin-transform-arrow-functions@^7.24.7": + "integrity" "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" - integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== +"@babel/plugin-transform-async-generator-functions@^7.24.7", "@babel/plugin-transform-async-generator-functions@7.24.7": + "integrity" "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-generator-functions@^7.23.9", "@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== +"@babel/plugin-transform-async-to-generator@^7.24.7", "@babel/plugin-transform-async-to-generator@7.24.7": + "integrity" "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" -"@babel/plugin-transform-async-to-generator@7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" - integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + "integrity" "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-to-generator@^7.20.7", "@babel/plugin-transform-async-to-generator@^7.23.3", "@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== +"@babel/plugin-transform-block-scoping@^7.24.7": + "integrity" "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz" + "version" "7.25.0" dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-block-scoped-functions@^7.18.6", "@babel/plugin-transform-block-scoped-functions@^7.23.3", "@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== +"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.24.7": + "integrity" "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz" + "version" "7.25.4" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.25.4" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-block-scoping@^7.21.0", "@babel/plugin-transform-block-scoping@^7.23.4", "@babel/plugin-transform-block-scoping@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" - integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== +"@babel/plugin-transform-class-static-block@^7.24.7": + "integrity" "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - -"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.23.3", "@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-class-static-block@^7.23.4", "@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.21.0", "@babel/plugin-transform-classes@^7.23.8", "@babel/plugin-transform-classes@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" - integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== +"@babel/plugin-transform-classes@^7.24.7": + "integrity" "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz" + "version" "7.25.4" dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.24.5" - globals "^11.1.0" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/traverse" "^7.25.4" + "globals" "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.21.5", "@babel/plugin-transform-computed-properties@^7.23.3", "@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== +"@babel/plugin-transform-computed-properties@^7.24.7": + "integrity" "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.21.3", "@babel/plugin-transform-destructuring@^7.23.3", "@babel/plugin-transform-destructuring@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" - integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== +"@babel/plugin-transform-destructuring@^7.24.7": + "integrity" "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz" + "version" "7.24.8" dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.23.3", "@babel/plugin-transform-dotall-regex@^7.24.1", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== +"@babel/plugin-transform-dotall-regex@^7.24.7": + "integrity" "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-duplicate-keys@^7.18.9", "@babel/plugin-transform-duplicate-keys@^7.23.3", "@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== +"@babel/plugin-transform-duplicate-keys@^7.24.7": + "integrity" "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dynamic-import@^7.23.4", "@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== +"@babel/plugin-transform-dynamic-import@^7.24.7": + "integrity" "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.18.6", "@babel/plugin-transform-exponentiation-operator@^7.23.3", "@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + "integrity" "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-export-namespace-from@^7.23.4", "@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== +"@babel/plugin-transform-export-namespace-from@^7.24.7": + "integrity" "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" - integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== +"@babel/plugin-transform-flow-strip-types@^7.24.7": + "integrity" "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz" + "version" "7.25.2" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-flow" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-flow" "^7.24.7" -"@babel/plugin-transform-for-of@^7.21.5", "@babel/plugin-transform-for-of@^7.23.6", "@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== +"@babel/plugin-transform-for-of@^7.24.7": + "integrity" "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.18.9", "@babel/plugin-transform-function-name@^7.23.3", "@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== +"@babel/plugin-transform-function-name@^7.24.7": + "integrity" "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz" + "version" "7.25.1" dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.1" -"@babel/plugin-transform-json-strings@^7.23.4", "@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== +"@babel/plugin-transform-json-strings@^7.24.7": + "integrity" "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.18.9", "@babel/plugin-transform-literals@^7.23.3", "@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== +"@babel/plugin-transform-literals@^7.24.7": + "integrity" "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz" + "version" "7.25.2" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-logical-assignment-operators@^7.23.4", "@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + "integrity" "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.18.6", "@babel/plugin-transform-member-expression-literals@^7.23.3", "@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== +"@babel/plugin-transform-member-expression-literals@^7.24.7": + "integrity" "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-amd@^7.20.11", "@babel/plugin-transform-modules-amd@^7.23.3", "@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== +"@babel/plugin-transform-modules-amd@^7.24.7": + "integrity" "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.21.5", "@babel/plugin-transform-modules-commonjs@^7.23.3", "@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== +"@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.24.1", "@babel/plugin-transform-modules-commonjs@^7.24.7": + "integrity" "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz" + "version" "7.24.8" dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-modules-systemjs@^7.20.11", "@babel/plugin-transform-modules-systemjs@^7.23.9", "@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== +"@babel/plugin-transform-modules-systemjs@^7.24.7": + "integrity" "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz" + "version" "7.25.0" dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-module-transforms" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.0" -"@babel/plugin-transform-modules-umd@^7.18.6", "@babel/plugin-transform-modules-umd@^7.23.3", "@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== +"@babel/plugin-transform-modules-umd@^7.24.7": + "integrity" "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.20.5", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + "integrity" "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-new-target@^7.18.6", "@babel/plugin-transform-new-target@^7.23.3", "@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== +"@babel/plugin-transform-new-target@^7.24.7": + "integrity" "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4", "@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + "integrity" "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.23.4", "@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== +"@babel/plugin-transform-numeric-separator@^7.24.7": + "integrity" "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.0", "@babel/plugin-transform-object-rest-spread@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" - integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== +"@babel/plugin-transform-object-rest-spread@^7.24.7": + "integrity" "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.7" -"@babel/plugin-transform-object-super@^7.18.6", "@babel/plugin-transform-object-super@^7.23.3", "@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== +"@babel/plugin-transform-object-super@^7.24.7": + "integrity" "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" -"@babel/plugin-transform-optional-catch-binding@^7.23.4", "@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + "integrity" "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.23.4", "@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" - integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== +"@babel/plugin-transform-optional-chaining@^7.23.0", "@babel/plugin-transform-optional-chaining@^7.24.7": + "integrity" "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz" + "version" "7.24.8" dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3", "@babel/plugin-transform-parameters@^7.23.3", "@babel/plugin-transform-parameters@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" - integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== +"@babel/plugin-transform-parameters@^7.24.7": + "integrity" "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.23.3", "@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.7": + "integrity" "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz" + "version" "7.25.4" dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.25.4" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-private-property-in-object@^7.23.4", "@babel/plugin-transform-private-property-in-object@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" - integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== +"@babel/plugin-transform-private-property-in-object@^7.24.7": + "integrity" "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.5" - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.18.6", "@babel/plugin-transform-property-literals@^7.23.3", "@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== +"@babel/plugin-transform-property-literals@^7.24.7": + "integrity" "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-regenerator@^7.21.5", "@babel/plugin-transform-regenerator@^7.23.3", "@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== +"@babel/plugin-transform-regenerator@^7.24.7": + "integrity" "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - regenerator-transform "^0.15.2" + "@babel/helper-plugin-utils" "^7.24.7" + "regenerator-transform" "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.18.6", "@babel/plugin-transform-reserved-words@^7.23.3", "@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== +"@babel/plugin-transform-reserved-words@^7.24.7": + "integrity" "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-runtime@7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz#e308fe27d08b74027d42547081eefaf4f2ffbcc9" - integrity sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA== +"@babel/plugin-transform-runtime@^7.23.2", "@babel/plugin-transform-runtime@7.24.7": + "integrity" "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - babel-plugin-polyfill-corejs2 "^0.4.8" - babel-plugin-polyfill-corejs3 "^0.9.0" - babel-plugin-polyfill-regenerator "^0.5.5" - semver "^6.3.1" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "babel-plugin-polyfill-corejs2" "^0.4.10" + "babel-plugin-polyfill-corejs3" "^0.10.1" + "babel-plugin-polyfill-regenerator" "^0.6.1" + "semver" "^6.3.1" -"@babel/plugin-transform-runtime@^7.23.2": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" - integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== +"@babel/plugin-transform-shorthand-properties@^7.24.7": + "integrity" "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-plugin-utils" "^7.24.0" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" - babel-plugin-polyfill-regenerator "^0.6.1" - semver "^6.3.1" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-shorthand-properties@^7.18.6", "@babel/plugin-transform-shorthand-properties@^7.23.3", "@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== +"@babel/plugin-transform-spread@^7.24.7": + "integrity" "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-spread@^7.20.7", "@babel/plugin-transform-spread@^7.23.3", "@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== +"@babel/plugin-transform-sticky-regex@^7.24.7": + "integrity" "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.18.6", "@babel/plugin-transform-sticky-regex@^7.23.3", "@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== +"@babel/plugin-transform-template-literals@^7.24.7": + "integrity" "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-template-literals@^7.18.9", "@babel/plugin-transform-template-literals@^7.23.3", "@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== +"@babel/plugin-transform-typeof-symbol@^7.24.7": + "integrity" "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz" + "version" "7.24.8" dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-typeof-symbol@^7.18.9", "@babel/plugin-transform-typeof-symbol@^7.23.3", "@babel/plugin-transform-typeof-symbol@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" - integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-transform-typescript@^7.24.1": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" - integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== + "integrity" "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz" + "version" "7.24.5" dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-create-class-features-plugin" "^7.24.5" "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-syntax-typescript" "^7.24.1" -"@babel/plugin-transform-unicode-escapes@^7.21.5", "@babel/plugin-transform-unicode-escapes@^7.23.3", "@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-property-regex@^7.23.3", "@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-regex@^7.18.6", "@babel/plugin-transform-unicode-regex@^7.23.3", "@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-unicode-sets-regex@^7.23.3", "@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/preset-env@7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.0.tgz#11536a7f4b977294f0bdfad780f01a8ac8e183fc" - integrity sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.23.3" - "@babel/plugin-syntax-import-attributes" "^7.23.3" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.9" - "@babel/plugin-transform-async-to-generator" "^7.23.3" - "@babel/plugin-transform-block-scoped-functions" "^7.23.3" - "@babel/plugin-transform-block-scoping" "^7.23.4" - "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.4" - "@babel/plugin-transform-classes" "^7.23.8" - "@babel/plugin-transform-computed-properties" "^7.23.3" - "@babel/plugin-transform-destructuring" "^7.23.3" - "@babel/plugin-transform-dotall-regex" "^7.23.3" - "@babel/plugin-transform-duplicate-keys" "^7.23.3" - "@babel/plugin-transform-dynamic-import" "^7.23.4" - "@babel/plugin-transform-exponentiation-operator" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.4" - "@babel/plugin-transform-for-of" "^7.23.6" - "@babel/plugin-transform-function-name" "^7.23.3" - "@babel/plugin-transform-json-strings" "^7.23.4" - "@babel/plugin-transform-literals" "^7.23.3" - "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" - "@babel/plugin-transform-member-expression-literals" "^7.23.3" - "@babel/plugin-transform-modules-amd" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.9" - "@babel/plugin-transform-modules-umd" "^7.23.3" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" - "@babel/plugin-transform-numeric-separator" "^7.23.4" - "@babel/plugin-transform-object-rest-spread" "^7.24.0" - "@babel/plugin-transform-object-super" "^7.23.3" - "@babel/plugin-transform-optional-catch-binding" "^7.23.4" - "@babel/plugin-transform-optional-chaining" "^7.23.4" - "@babel/plugin-transform-parameters" "^7.23.3" - "@babel/plugin-transform-private-methods" "^7.23.3" - "@babel/plugin-transform-private-property-in-object" "^7.23.4" - "@babel/plugin-transform-property-literals" "^7.23.3" - "@babel/plugin-transform-regenerator" "^7.23.3" - "@babel/plugin-transform-reserved-words" "^7.23.3" - "@babel/plugin-transform-shorthand-properties" "^7.23.3" - "@babel/plugin-transform-spread" "^7.23.3" - "@babel/plugin-transform-sticky-regex" "^7.23.3" - "@babel/plugin-transform-template-literals" "^7.23.3" - "@babel/plugin-transform-typeof-symbol" "^7.23.3" - "@babel/plugin-transform-unicode-escapes" "^7.23.3" - "@babel/plugin-transform-unicode-property-regex" "^7.23.3" - "@babel/plugin-transform-unicode-regex" "^7.23.3" - "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.8" - babel-plugin-polyfill-corejs3 "^0.9.0" - babel-plugin-polyfill-regenerator "^0.5.5" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9", "@babel/preset-env@^7.23.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" - integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== - dependencies: - "@babel/compat-data" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" +"@babel/plugin-transform-unicode-escapes@^7.24.7": + "integrity" "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + "integrity" "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-unicode-regex@^7.24.7": + "integrity" "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + "integrity" "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz" + "version" "7.25.4" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.2" + "@babel/helper-plugin-utils" "^7.24.8" + +"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.23.2", "@babel/preset-env@^7.24.4", "@babel/preset-env@7.24.7": + "integrity" "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==" + "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "@babel/compat-data" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -1774,176 +1395,83 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.5" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.5" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.5" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.5" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.5" - "@babel/plugin-transform-parameters" "^7.24.5" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.5" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.5" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.24.7" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.24.7" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.7" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.24.7" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-modules-systemjs" "^7.24.7" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.7" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-env@~7.21.0": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb" - integrity sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg== - dependencies: - "@babel/compat-data" "^7.21.5" - "@babel/helper-compilation-targets" "^7.21.5" - "@babel/helper-plugin-utils" "^7.21.5" - "@babel/helper-validator-option" "^7.21.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7" - "@babel/plugin-proposal-async-generator-functions" "^7.20.7" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.21.0" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.20.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.21.0" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.21.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.20.0" - "@babel/plugin-syntax-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-transform-arrow-functions" "^7.21.5" - "@babel/plugin-transform-async-to-generator" "^7.20.7" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.21.0" - "@babel/plugin-transform-classes" "^7.21.0" - "@babel/plugin-transform-computed-properties" "^7.21.5" - "@babel/plugin-transform-destructuring" "^7.21.3" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.21.5" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.20.11" - "@babel/plugin-transform-modules-commonjs" "^7.21.5" - "@babel/plugin-transform-modules-systemjs" "^7.20.11" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.21.3" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.21.5" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.20.7" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.21.5" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.21.5" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" - semver "^6.3.0" - -"@babel/preset-flow@^7.13.13": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.24.1.tgz#da7196c20c2d7dd4e98cfd8b192fe53b5eb6f0bb" - integrity sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-flow-strip-types" "^7.24.1" + "babel-plugin-polyfill-corejs2" "^0.4.10" + "babel-plugin-polyfill-corejs3" "^0.10.4" + "babel-plugin-polyfill-regenerator" "^0.6.1" + "core-js-compat" "^3.31.0" + "semver" "^6.3.1" -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== +"@babel/preset-flow@^7.22.15": + "integrity" "sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==" + "resolved" "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.7.tgz" + "version" "7.24.7" dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-flow-strip-types" "^7.24.7" -"@babel/preset-modules@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" - integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== +"@babel/preset-modules@0.1.6-no-external-plugins": + "integrity" "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==" + "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" + "version" "0.1.6-no-external-plugins" 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" + "esutils" "^2.0.2" -"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.22.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" - integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== +"@babel/preset-typescript@^7.22.5", "@babel/preset-typescript@^7.23.0": + "integrity" "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==" + "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz" + "version" "7.24.1" dependencies: "@babel/helper-plugin-utils" "^7.24.0" "@babel/helper-validator-option" "^7.23.5" @@ -1951,49 +1479,55 @@ "@babel/plugin-transform-modules-commonjs" "^7.24.1" "@babel/plugin-transform-typescript" "^7.24.1" -"@babel/register@^7.13.16": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" - integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== +"@babel/register@^7.22.15": + "integrity" "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==" + "resolved" "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz" + "version" "7.24.6" dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.6" - source-map-support "^0.5.16" + "clone-deep" "^4.0.1" + "find-cache-dir" "^2.0.0" + "make-dir" "^2.1.0" + "pirates" "^4.0.6" + "source-map-support" "^0.5.16" "@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" - integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.22.6", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" - integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.20.7", "@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.24.0", "@babel/template@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" + "integrity" "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + "resolved" "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + "version" "0.8.0" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.22.6", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@7.24.7": + "integrity" "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz" + "version" "7.24.7" + dependencies: + "regenerator-runtime" "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.24.7", "@babel/template@^7.25.0", "@babel/template@^7.3.3": + "integrity" "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz" + "version" "7.25.0" + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/traverse@^7.16.0", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.25.4": + "integrity" "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz" + "version" "7.25.4" + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.4" + "@babel/parser" "^7.25.4" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.4" + "debug" "^4.3.1" + "globals" "^11.1.0" "@babel/traverse@7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" - integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + "integrity" "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz" + "version" "7.23.2" dependencies: "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" @@ -2003,908 +1537,433 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/parser" "^7.23.0" "@babel/types" "^7.23.0" - debug "^4.1.0" - globals "^11.1.0" + "debug" "^4.1.0" + "globals" "^11.1.0" -"@babel/traverse@^7.16.0", "@babel/traverse@^7.21.5", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.9", "@babel/traverse@^7.24.0", "@babel/traverse@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.4", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + "integrity" "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz" + "version" "7.25.4" dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@~7.21.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" - integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.5" - "@babel/types" "^7.21.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.0.0", "@babel/types@^7.17.0", "@babel/types@^7.20.7", "@babel/types@^7.21.5", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== - dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + "to-fast-properties" "^2.0.0" -"@babel/types@~7.21.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" - integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== +"@babel/types@^7.17.0", "@babel/types@7.17.0": + "integrity" "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz" + "version" "7.17.0" dependencies: - "@babel/helper-string-parser" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" + "@babel/helper-validator-identifier" "^7.16.7" + "to-fast-properties" "^2.0.0" "@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + "version" "0.2.3" "@braintree/sanitize-url@^6.0.1": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" - integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== + "integrity" "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + "resolved" "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz" + "version" "6.0.4" "@codewithdan/observable-store@2.2.15": - version "2.2.15" - resolved "https://registry.yarnpkg.com/@codewithdan/observable-store/-/observable-store-2.2.15.tgz#6d27e0988e182853def59a714b712f4389e558d2" - integrity sha512-LVCSMZzTCvoDo5n7YDmtIIEhTmvJ8O21k36Vwu/A4kumdXQ1YVs4sKoSK3vlINZPL4AYY2MRsBVtvre4QIETFw== + "integrity" "sha512-LVCSMZzTCvoDo5n7YDmtIIEhTmvJ8O21k36Vwu/A4kumdXQ1YVs4sKoSK3vlINZPL4AYY2MRsBVtvre4QIETFw==" + "resolved" "https://registry.npmjs.org/@codewithdan/observable-store/-/observable-store-2.2.15.tgz" + "version" "2.2.15" "@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + "version" "1.5.0" "@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" + "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + "version" "0.8.1" dependencies: "@jridgewell/trace-mapping" "0.3.9" "@cypress/listr-verbose-renderer@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" - integrity sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw== + "integrity" "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==" + "resolved" "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz" + "version" "0.4.1" dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" - date-fns "^1.27.2" - figures "^1.7.0" + "chalk" "^1.1.3" + "cli-cursor" "^1.0.2" + "date-fns" "^1.27.2" + "figures" "^1.7.0" "@cypress/request@^2.88.5": - version "2.88.12" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" - integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - http-signature "~1.3.6" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - performance-now "^2.1.0" - qs "~6.10.3" - safe-buffer "^5.1.2" - tough-cookie "^4.1.3" - tunnel-agent "^0.6.0" - uuid "^8.3.2" + "integrity" "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==" + "resolved" "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz" + "version" "2.88.12" + dependencies: + "aws-sign2" "~0.7.0" + "aws4" "^1.8.0" + "caseless" "~0.12.0" + "combined-stream" "~1.0.6" + "extend" "~3.0.2" + "forever-agent" "~0.6.1" + "form-data" "~2.3.2" + "http-signature" "~1.3.6" + "is-typedarray" "~1.0.0" + "isstream" "~0.1.2" + "json-stringify-safe" "~5.0.1" + "mime-types" "~2.1.19" + "performance-now" "^2.1.0" + "qs" "~6.10.3" + "safe-buffer" "^5.1.2" + "tough-cookie" "^4.1.3" + "tunnel-agent" "^0.6.0" + "uuid" "^8.3.2" "@cypress/xvfb@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" - integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== + "integrity" "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==" + "resolved" "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz" + "version" "1.2.4" dependencies: - debug "^3.1.0" - lodash.once "^4.1.1" + "debug" "^3.1.0" + "lodash.once" "^4.1.1" -"@dfinity/agent@0.15.7": - version "0.15.7" - resolved "https://registry.yarnpkg.com/@dfinity/agent/-/agent-0.15.7.tgz#e31261bc22504219cdf0e760bf396db642150a4a" - integrity sha512-w34yvlUTpPBG8nLOD0t/ao3k2xonOFq4QGvfJ1HiS/nIggdza/3xC3nLBszGrjVYWj1jqu8BLFvQXCAeWin75A== +"@dfinity/agent@^0.15.7", "@dfinity/agent@0.15.7": + "integrity" "sha512-w34yvlUTpPBG8nLOD0t/ao3k2xonOFq4QGvfJ1HiS/nIggdza/3xC3nLBszGrjVYWj1jqu8BLFvQXCAeWin75A==" + "resolved" "https://registry.npmjs.org/@dfinity/agent/-/agent-0.15.7.tgz" + "version" "0.15.7" dependencies: - base64-arraybuffer "^0.2.0" - bignumber.js "^9.0.0" - borc "^2.1.1" - js-sha256 "0.9.0" - simple-cbor "^0.4.1" - ts-node "^10.8.2" + "base64-arraybuffer" "^0.2.0" + "bignumber.js" "^9.0.0" + "borc" "^2.1.1" + "js-sha256" "0.9.0" + "simple-cbor" "^0.4.1" + "ts-node" "^10.8.2" "@dfinity/auth-client@0.15.7": - version "0.15.7" - resolved "https://registry.yarnpkg.com/@dfinity/auth-client/-/auth-client-0.15.7.tgz#cbecc9e29b2096f56426656b1f6f3c9e1a622f3e" - integrity sha512-f6cRqXayCf+7+9gNcDnAZZwJrgBYKIzfxjxeRLlpsueQeo+E/BX2yVSANxzTkCNc4U3p+ttHI1RNtasLunYTcA== + "integrity" "sha512-f6cRqXayCf+7+9gNcDnAZZwJrgBYKIzfxjxeRLlpsueQeo+E/BX2yVSANxzTkCNc4U3p+ttHI1RNtasLunYTcA==" + "resolved" "https://registry.npmjs.org/@dfinity/auth-client/-/auth-client-0.15.7.tgz" + "version" "0.15.7" dependencies: - idb "^7.0.2" + "idb" "^7.0.2" -"@dfinity/candid@0.15.7": - version "0.15.7" - resolved "https://registry.yarnpkg.com/@dfinity/candid/-/candid-0.15.7.tgz#c395d0fa353c4df653edd0aaebc9ff1f253cc5ba" - integrity sha512-lTcjK/xrSyT7wvUQ2pApG+yklQAwxaofQ04D1IWv0/8gKbY0eUbh8G2w6+CypJ15Hb1CH24ijUj8nWdeX/z3jg== +"@dfinity/candid@^0.15.7", "@dfinity/candid@0.15.7": + "integrity" "sha512-lTcjK/xrSyT7wvUQ2pApG+yklQAwxaofQ04D1IWv0/8gKbY0eUbh8G2w6+CypJ15Hb1CH24ijUj8nWdeX/z3jg==" + "resolved" "https://registry.npmjs.org/@dfinity/candid/-/candid-0.15.7.tgz" + "version" "0.15.7" dependencies: - ts-node "^10.8.2" + "ts-node" "^10.8.2" -"@dfinity/identity@0.15.7": - version "0.15.7" - resolved "https://registry.yarnpkg.com/@dfinity/identity/-/identity-0.15.7.tgz#af8bf3f8e69f22e3cee08abb3a33851a6bc07c92" - integrity sha512-kBAkx9wq78jSQf6T5aayLyWm8YgtOZw8bW6+OuzX6tR3hkAEa85A9TcKA7BjkmMWSIskjEDVQub4fFfKWS2vOQ== +"@dfinity/identity@^0.15.7", "@dfinity/identity@0.15.7": + "integrity" "sha512-kBAkx9wq78jSQf6T5aayLyWm8YgtOZw8bW6+OuzX6tR3hkAEa85A9TcKA7BjkmMWSIskjEDVQub4fFfKWS2vOQ==" + "resolved" "https://registry.npmjs.org/@dfinity/identity/-/identity-0.15.7.tgz" + "version" "0.15.7" dependencies: - borc "^2.1.1" - js-sha256 "^0.9.0" - tweetnacl "^1.0.1" + "borc" "^2.1.1" + "js-sha256" "^0.9.0" + "tweetnacl" "^1.0.1" -"@dfinity/principal@0.15.7": - version "0.15.7" - resolved "https://registry.yarnpkg.com/@dfinity/principal/-/principal-0.15.7.tgz#311cf1072d6fd64b9b91476dda4d3ef5ddfcefea" - integrity sha512-6/AkYzpGEH6Jw/0+B/EeeQn+5u2GDDvRLt1kQPhIG4txQYFnOy04H3VvyrymmfAj6/CXUgrOrux6OxgYSLYVJg== +"@dfinity/principal@^0.15.7", "@dfinity/principal@0.15.7": + "integrity" "sha512-6/AkYzpGEH6Jw/0+B/EeeQn+5u2GDDvRLt1kQPhIG4txQYFnOy04H3VvyrymmfAj6/CXUgrOrux6OxgYSLYVJg==" + "resolved" "https://registry.npmjs.org/@dfinity/principal/-/principal-0.15.7.tgz" + "version" "0.15.7" dependencies: - js-sha256 "^0.9.0" - ts-node "^10.8.2" + "js-sha256" "^0.9.0" + "ts-node" "^10.8.2" "@dinero.js/currencies@2.0.0-alpha.8": - version "2.0.0-alpha.8" - resolved "https://registry.yarnpkg.com/@dinero.js/currencies/-/currencies-2.0.0-alpha.8.tgz#aa02a04ce3685a9b06a7ce12f8c924726386c3fd" - integrity sha512-zApiqtuuPwjiM9LJA5/kNcT48VSHRiz2/mktkXjIpfxrJKzthXybUAgEenExIH6dYhLDgVmsLQZtZFOsdYl0Ag== - -"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.3": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== - -"@esbuild/aix-ppc64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" - integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== - -"@esbuild/aix-ppc64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz#eafa8775019b3650a77e8310ba4dbd17ca7af6d5" - integrity sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA== - -"@esbuild/aix-ppc64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.1.tgz#044268dc9ca4dc67f8d4aad8f51cfb894bfd7114" - integrity sha512-O7yppwipkXvnEPjzkSXJRk2g4bS8sUx9p9oXHq9MU/U7lxUzZVsnFZMDTmeeX9bfQxrFcvOacl/ENgOh0WP9pA== - -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" - integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== - -"@esbuild/android-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" - integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== - -"@esbuild/android-arm64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz#68791afa389550736f682c15b963a4f37ec2f5f6" - integrity sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A== - -"@esbuild/android-arm64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.1.tgz#76aacd934449e541f05b66d5ec8cbff96ec2ae81" - integrity sha512-jXhccq6es+onw7x8MxoFnm820mz7sGa9J14kLADclmiEUH4fyj+FjR6t0M93RgtlI/awHWhtF0Wgfhqgf9gDZA== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" - integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== - -"@esbuild/android-arm@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" - integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== - -"@esbuild/android-arm@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.1.tgz#38c91d8ee8d5196f7fbbdf4f0061415dde3a473a" - integrity sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw== - -"@esbuild/android-arm@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.1.tgz#8247c5aef933a212bca261290f6e43a9dca07cc5" - integrity sha512-hh3jKWikdnTtHCglDAeVO3Oyh8MaH8xZUaWMiCCvJ9/c3NtPqZq+CACOlGTxhddypXhl+8B45SeceYBfB/e8Ow== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/android-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" - integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== - -"@esbuild/android-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" - integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== - -"@esbuild/android-x64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.1.tgz#93f6190ce997b313669c20edbf3645fc6c8d8f22" - integrity sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA== - -"@esbuild/android-x64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.1.tgz#80cbfa35412299edefbc4ab78064f0b66e448008" - integrity sha512-NPObtlBh4jQHE01gJeucqEhdoD/4ya2owSIS8lZYS58aR0x7oZo9lB2lVFxgTANSa5MGCBeoQtr+yA9oKCGPvA== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== - -"@esbuild/darwin-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" - integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== - -"@esbuild/darwin-arm64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz#0d391f2e81fda833fe609182cc2fbb65e03a3c46" - integrity sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA== - -"@esbuild/darwin-arm64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.1.tgz#154167fb9e54017dac4b343f8e5e25c9d9324036" - integrity sha512-BLT7TDzqsVlQRmJfO/FirzKlzmDpBWwmCUlyggfzUwg1cAxVxeA4O6b1XkMInlxISdfPAOunV9zXjvh5x99Heg== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/darwin-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== - -"@esbuild/darwin-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" - integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== - -"@esbuild/darwin-x64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz#92504077424584684862f483a2242cfde4055ba2" - integrity sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA== - -"@esbuild/darwin-x64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.1.tgz#db971502c9fa204906b89e489810c902bf6d9afb" - integrity sha512-D3h3wBQmeS/vp93O4B+SWsXB8HvRDwMyhTNhBd8yMbh5wN/2pPWRW5o/hM3EKgk9bdKd9594lMGoTCTiglQGRQ== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" - integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== - -"@esbuild/freebsd-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" - integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== - -"@esbuild/freebsd-arm64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz#a1646fa6ba87029c67ac8a102bb34384b9290774" - integrity sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw== - -"@esbuild/freebsd-arm64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.1.tgz#f0f3bc20c23af999bd696099a324dceb66d77761" - integrity sha512-/uVdqqpNKXIxT6TyS/oSK4XE4xWOqp6fh4B5tgAwozkyWdylcX+W4YF2v6SKsL4wCQ5h1bnaSNjWPXG/2hp8AQ== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/freebsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" - integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== - -"@esbuild/freebsd-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" - integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== - -"@esbuild/freebsd-x64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz#41c9243ab2b3254ea7fb512f71ffdb341562e951" - integrity sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg== - -"@esbuild/freebsd-x64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.1.tgz#d36af9085edb34244b41e5a57640e6b4452cbec2" - integrity sha512-paAkKN1n1jJitw+dAoR27TdCzxRl1FOEITx3h201R6NoXUojpMzgMLdkXVgCvaCSCqwYkeGLoe9UVNRDKSvQgw== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" - integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== - -"@esbuild/linux-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" - integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== - -"@esbuild/linux-arm64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz#f3c1e1269fbc9eedd9591a5bdd32bf707a883156" - integrity sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w== - -"@esbuild/linux-arm64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.1.tgz#9d2ad42eea33b2a9571f13e7ecc39ee9d3ff0c6d" - integrity sha512-G65d08YoH00TL7Xg4LaL3gLV21bpoAhQ+r31NUu013YB7KK0fyXIt05VbsJtpqh/6wWxoLJZOvQHYnodRrnbUQ== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" - integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== - -"@esbuild/linux-arm@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" - integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== - -"@esbuild/linux-arm@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz#4503ca7001a8ee99589c072801ce9d7540717a21" - integrity sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw== - -"@esbuild/linux-arm@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.1.tgz#d6f7c5873479dd97148bef3e3a7f09d486642883" - integrity sha512-tRHnxWJnvNnDpNVnsyDhr1DIQZUfCXlHSCDohbXFqmg9W4kKR7g8LmA3kzcwbuxbRMKeit8ladnCabU5f2traA== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" - integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== - -"@esbuild/linux-ia32@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" - integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== - -"@esbuild/linux-ia32@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz#98c474e3e0cbb5bcbdd8561a6e65d18f5767ce48" - integrity sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw== - -"@esbuild/linux-ia32@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.1.tgz#8f2aef34a31c8d16dbce0b8679021f4881f38efe" - integrity sha512-tt/54LqNNAqCz++QhxoqB9+XqdsaZOtFD/srEhHYwBd3ZUOepmR1Eeot8bS+Q7BiEvy9vvKbtpHf+r6q8hF5UA== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-loong64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" - integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== - -"@esbuild/linux-loong64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" - integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== - -"@esbuild/linux-loong64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz#a8097d28d14b9165c725fe58fc438f80decd2f33" - integrity sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA== - -"@esbuild/linux-loong64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.1.tgz#44461ea2388efbafa6cf12b2bc1407a5388da066" - integrity sha512-MhNalK6r0nZD0q8VzUBPwheHzXPr9wronqmZrewLfP7ui9Fv1tdPmg6e7A8lmg0ziQCziSDHxh3cyRt4YMhGnQ== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-mips64el@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" - integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== - -"@esbuild/linux-mips64el@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" - integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== - -"@esbuild/linux-mips64el@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz#c44f6f0d7d017c41ad3bb15bfdb69b690656b5ea" - integrity sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA== - -"@esbuild/linux-mips64el@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.1.tgz#754d533a4fef4b0790d82bfe1e82d6876f18370e" - integrity sha512-YCKVY7Zen5rwZV+nZczOhFmHaeIxR4Zn3jcmNH53LbgF6IKRwmrMywqDrg4SiSNApEefkAbPSIzN39FC8VsxPg== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-ppc64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" - integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== - -"@esbuild/linux-ppc64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" - integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== - -"@esbuild/linux-ppc64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz#0765a55389a99237b3c84227948c6e47eba96f0d" - integrity sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw== - -"@esbuild/linux-ppc64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.1.tgz#2aafcfe2826c7d5d2e3c41eb8934e6368a7cada5" - integrity sha512-bw7bcQ+270IOzDV4mcsKAnDtAFqKO0jVv3IgRSd8iM0ac3L8amvCrujRVt1ajBTJcpDaFhIX+lCNRKteoDSLig== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-riscv64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" - integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== - -"@esbuild/linux-riscv64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" - integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== - -"@esbuild/linux-riscv64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz#e4153b032288e3095ddf4c8be07893781b309a7e" - integrity sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg== - -"@esbuild/linux-riscv64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.1.tgz#481ceaf5939d14fb25da62a385b5e6c2096a3370" - integrity sha512-ARmDRNkcOGOm1AqUBSwRVDfDeD9hGYRfkudP2QdoonBz1ucWVnfBPfy7H4JPI14eYtZruRSczJxyu7SRYDVOcg== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@esbuild/linux-s390x@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" - integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== - -"@esbuild/linux-s390x@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" - integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== - -"@esbuild/linux-s390x@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz#b9ab8af6e4b73b26d63c1c426d7669a5d53eb5a7" - integrity sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ== - -"@esbuild/linux-s390x@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.1.tgz#e25b97005e4c82540d1bc7af88e333fb55142570" - integrity sha512-o73TcUNMuoTZlhwFdsgr8SfQtmMV58sbgq6gQq9G1xUiYnHMTmJbwq65RzMx89l0iya69lR4bxBgtWiiOyDQZA== - -"@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/linux-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" - integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== - -"@esbuild/linux-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" - integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== - -"@esbuild/linux-x64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz#0b25da17ac38c3e11cdd06ca3691d4d6bef2755f" - integrity sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA== - -"@esbuild/linux-x64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.1.tgz#a05a61d0a0cbb03baa6db12cd8164c1e5265ffb2" - integrity sha512-da4/1mBJwwgJkbj4fMH7SOXq2zapgTo0LKXX1VUZ0Dxr+e8N0WbS80nSZ5+zf3lvpf8qxrkZdqkOqFfm57gXwA== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/netbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" - integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== - -"@esbuild/netbsd-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" - integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== - -"@esbuild/netbsd-x64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz#3148e48406cd0d4f7ba1e0bf3f4d77d548c98407" - integrity sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg== - -"@esbuild/netbsd-x64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.1.tgz#e298f854e8999563f2e4668bd542678c46be4b53" - integrity sha512-CPWs0HTFe5woTJN5eKPvgraUoRHrCtzlYIAv9wBC+FAyagBSaf+UdZrjwYyTGnwPGkThV4OCI7XibZOnPvONVw== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/openbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" - integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== - -"@esbuild/openbsd-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" - integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== - -"@esbuild/openbsd-x64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz#7b73e852986a9750192626d377ac96ac2b749b76" - integrity sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw== - -"@esbuild/openbsd-x64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.1.tgz#640d34de1e3c6bc3ff64e0379aae00ede3608f14" - integrity sha512-xxhTm5QtzNLc24R0hEkcH+zCx/o49AsdFZ0Cy5zSd/5tOj4X2g3/2AJB625NoadUuc4A8B3TenLJoYdWYOYCew== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/sunos-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" - integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== - -"@esbuild/sunos-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" - integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== - -"@esbuild/sunos-x64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz#402a441cdac2eee98d8be378c7bc23e00c1861c5" - integrity sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q== - -"@esbuild/sunos-x64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.1.tgz#f53cb1cdcbf05b3320e147ddb85ec2b1cf2b6cfc" - integrity sha512-CWibXszpWys1pYmbr9UiKAkX6x+Sxw8HWtw1dRESK1dLW5fFJ6rMDVw0o8MbadusvVQx1a8xuOxnHXT941Hp1A== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" - integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== - -"@esbuild/win32-arm64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" - integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== - -"@esbuild/win32-arm64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz#36c4e311085806a6a0c5fc54d1ac4d7b27e94d7b" - integrity sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A== - -"@esbuild/win32-arm64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.1.tgz#df4f44f9b4fec9598c0ec2c34fec9c568c8ab85d" - integrity sha512-jb5B4k+xkytGbGUS4T+Z89cQJ9DJ4lozGRSV+hhfmCPpfJ3880O31Q1srPCimm+V6UCbnigqD10EgDNgjvjerQ== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" - integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== - -"@esbuild/win32-ia32@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" - integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== - -"@esbuild/win32-ia32@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz#0cf933be3fb9dc58b45d149559fe03e9e22b54fe" - integrity sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw== - -"@esbuild/win32-ia32@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.1.tgz#a57edbd9905db9f957327ae0facfbf406a80a4e4" - integrity sha512-PgyFvjJhXqHn1uxPhyN1wZ6dIomKjiLUQh1LjFvjiV1JmnkZ/oMPrfeEAZg5R/1ftz4LZWZr02kefNIQ5SKREQ== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== - -"@esbuild/win32-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" - integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== - -"@esbuild/win32-x64@0.19.12": - version "0.19.12" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" - integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== - -"@esbuild/win32-x64@0.20.1": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz#77583b6ea54cee7c1410ebbd54051b6a3fcbd8ba" - integrity sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA== - -"@esbuild/win32-x64@0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.1.tgz#eb86553d90e86a8c174b96650fdb4c60f2de16a7" - integrity sha512-W9NttRZQR5ehAiqHGDnvfDaGmQOm6Fi4vSlce8mjM75x//XKuVAByohlEX6N17yZnVXxQFuh4fDRunP8ca6bfA== + "integrity" "sha512-zApiqtuuPwjiM9LJA5/kNcT48VSHRiz2/mktkXjIpfxrJKzthXybUAgEenExIH6dYhLDgVmsLQZtZFOsdYl0Ag==" + "resolved" "https://registry.npmjs.org/@dinero.js/currencies/-/currencies-2.0.0-alpha.8.tgz" + "version" "2.0.0-alpha.8" -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" +"@discoveryjs/json-ext@0.5.7": + "integrity" "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + "resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + "version" "0.5.7" -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== +"@emnapi/core@^1.1.0": + "integrity" "sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==" + "resolved" "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "@emnapi/wasi-threads" "1.0.1" + "tslib" "^2.4.0" -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.56.0": - version "8.56.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" - integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== +"@emnapi/runtime@^1.1.0": + "integrity" "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==" + "resolved" "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "tslib" "^2.4.0" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@emnapi/wasi-threads@1.0.1": + "integrity" "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==" + "resolved" "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "tslib" "^2.4.0" -"@fal-works/esbuild-plugin-global-externals@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" - integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== +"@esbuild/win32-x64@0.21.5": + "integrity" "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==" + "resolved" "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz" + "version" "0.21.5" -"@floating-ui/core@^1.0.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.1.tgz#a4e6fef1b069cda533cbc7a4998c083a37f37573" - integrity sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A== +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" + "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + "version" "4.4.0" dependencies: - "@floating-ui/utils" "^0.2.0" + "eslint-visitor-keys" "^3.3.0" -"@floating-ui/dom@^1.0.0": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.5.tgz#323f065c003f1d3ecf0ff16d2c2c4d38979f4cb9" - integrity sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw== - dependencies: - "@floating-ui/core" "^1.0.0" - "@floating-ui/utils" "^0.2.0" +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + "integrity" "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==" + "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" + "version" "4.10.0" -"@floating-ui/react-dom@^2.0.0": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.9.tgz#264ba8b061000baa132b5910f0427a6acf7ad7ce" - integrity sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ== - dependencies: - "@floating-ui/dom" "^1.0.0" +"@eslint/eslintrc@^2.1.4": + "integrity" "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + "version" "2.1.4" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.3.2" + "espree" "^9.6.0" + "globals" "^13.19.0" + "ignore" "^5.2.0" + "import-fresh" "^3.2.1" + "js-yaml" "^4.1.0" + "minimatch" "^3.1.2" + "strip-json-comments" "^3.1.1" -"@floating-ui/utils@^0.2.0": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5" - integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw== +"@eslint/js@8.57.0": + "integrity" "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==" + "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz" + "version" "8.57.0" "@hexagon/base64@^1.1.27": - version "1.1.28" - resolved "https://registry.yarnpkg.com/@hexagon/base64/-/base64-1.1.28.tgz#7d306a97f1423829be5b27c9d388fe50e3099d48" - integrity sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw== + "integrity" "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==" + "resolved" "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz" + "version" "1.1.28" -"@humanwhocodes/config-array@^0.11.13", "@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanwhocodes/config-array@^0.11.14": + "integrity" "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" + "version" "0.11.14" dependencies: "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" + "debug" "^4.3.1" + "minimatch" "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + "version" "1.0.1" "@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + "integrity" "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" + "version" "2.0.3" + +"@inquirer/checkbox@^2.3.7": + "integrity" "sha512-5YwCySyV1UEgqzz34gNsC38eKxRBtlRDpJLlKcRtTjlYA/yDKuc1rfw+hjw+2WJxbAZtaDPsRl5Zk7J14SBoBw==" + "resolved" "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.4.7.tgz" + "version" "2.4.7" + dependencies: + "@inquirer/core" "^9.0.10" + "@inquirer/figures" "^1.0.5" + "@inquirer/type" "^1.5.2" + "ansi-escapes" "^4.3.2" + "yoctocolors-cjs" "^2.1.2" + +"@inquirer/confirm@^3.1.11": + "integrity" "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==" + "resolved" "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.22.tgz" + "version" "3.1.22" + dependencies: + "@inquirer/core" "^9.0.10" + "@inquirer/type" "^1.5.2" + +"@inquirer/confirm@3.1.11": + "integrity" "sha512-3wWw10VPxQP279FO4bzWsf8YjIAq7NdwATJ4xS2h1uwsXZu/RmtOVV95rZ7yllS1h/dzu+uLewjMAzNDEj8h2w==" + "resolved" "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.11.tgz" + "version" "3.1.11" + dependencies: + "@inquirer/core" "^8.2.4" + "@inquirer/type" "^1.3.3" + +"@inquirer/core@^8.2.4": + "integrity" "sha512-7vsXSfxtrrbwMTirfaKwPcjqJy7pzeuF/bP62yo1NQrRJ5HjmMlrhZml/Ljm9ODc1RnbhJlTeSnCkjtFddKjwA==" + "resolved" "https://registry.npmjs.org/@inquirer/core/-/core-8.2.4.tgz" + "version" "8.2.4" + dependencies: + "@inquirer/figures" "^1.0.3" + "@inquirer/type" "^1.3.3" + "@types/mute-stream" "^0.0.4" + "@types/node" "^20.14.9" + "@types/wrap-ansi" "^3.0.0" + "ansi-escapes" "^4.3.2" + "cli-spinners" "^2.9.2" + "cli-width" "^4.1.0" + "mute-stream" "^1.0.0" + "picocolors" "^1.0.1" + "signal-exit" "^4.1.0" + "strip-ansi" "^6.0.1" + "wrap-ansi" "^6.2.0" + +"@inquirer/core@^9.0.10": + "integrity" "sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA==" + "resolved" "https://registry.npmjs.org/@inquirer/core/-/core-9.0.10.tgz" + "version" "9.0.10" + dependencies: + "@inquirer/figures" "^1.0.5" + "@inquirer/type" "^1.5.2" + "@types/mute-stream" "^0.0.4" + "@types/node" "^22.1.0" + "@types/wrap-ansi" "^3.0.0" + "ansi-escapes" "^4.3.2" + "cli-spinners" "^2.9.2" + "cli-width" "^4.1.0" + "mute-stream" "^1.0.0" + "signal-exit" "^4.1.0" + "strip-ansi" "^6.0.1" + "wrap-ansi" "^6.2.0" + "yoctocolors-cjs" "^2.1.2" + +"@inquirer/editor@^2.1.11": + "integrity" "sha512-K1QwTu7GCK+nKOVRBp5HY9jt3DXOfPGPr6WRDrPImkcJRelG9UTx2cAtK1liXmibRrzJlTWOwqgWT3k2XnS62w==" + "resolved" "https://registry.npmjs.org/@inquirer/editor/-/editor-2.1.22.tgz" + "version" "2.1.22" + dependencies: + "@inquirer/core" "^9.0.10" + "@inquirer/type" "^1.5.2" + "external-editor" "^3.1.0" + +"@inquirer/expand@^2.1.11": + "integrity" "sha512-wTZOBkzH+ItPuZ3ZPa9lynBsdMp6kQ9zbjVPYEtSBG7UulGjg2kQiAnUjgyG4SlntpTce5bOmXAPvE4sguXjpA==" + "resolved" "https://registry.npmjs.org/@inquirer/expand/-/expand-2.1.22.tgz" + "version" "2.1.22" + dependencies: + "@inquirer/core" "^9.0.10" + "@inquirer/type" "^1.5.2" + "yoctocolors-cjs" "^2.1.2" + +"@inquirer/figures@^1.0.3", "@inquirer/figures@^1.0.5": + "integrity" "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==" + "resolved" "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz" + "version" "1.0.5" + +"@inquirer/input@^2.1.11": + "integrity" "sha512-7Z6N+uzkWM7+xsE+3rJdhdG/+mQgejOVqspoW+w0AbSZnL6nq5tGMEVASaYVWbkoSzecABWwmludO2evU3d31g==" + "resolved" "https://registry.npmjs.org/@inquirer/input/-/input-2.2.9.tgz" + "version" "2.2.9" + dependencies: + "@inquirer/core" "^9.0.10" + "@inquirer/type" "^1.5.2" + +"@inquirer/password@^2.1.11": + "integrity" "sha512-5Fxt1L9vh3rAKqjYwqsjU4DZsEvY/2Gll+QkqR4yEpy6wvzLxdSgFhUcxfDAOtO4BEoTreWoznC0phagwLU5Kw==" + "resolved" "https://registry.npmjs.org/@inquirer/password/-/password-2.1.22.tgz" + "version" "2.1.22" + dependencies: + "@inquirer/core" "^9.0.10" + "@inquirer/type" "^1.5.2" + "ansi-escapes" "^4.3.2" + +"@inquirer/prompts@>= 3 < 6", "@inquirer/prompts@5.0.7": + "integrity" "sha512-GFcigCxJTKCH3aECzMIu4FhgLJWnFvMXzpI4CCSoELWFtkOOU2P+goYA61+OKpGrB8fPE7q6n8zAXBSlZRrHjQ==" + "resolved" "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.0.7.tgz" + "version" "5.0.7" + dependencies: + "@inquirer/checkbox" "^2.3.7" + "@inquirer/confirm" "^3.1.11" + "@inquirer/editor" "^2.1.11" + "@inquirer/expand" "^2.1.11" + "@inquirer/input" "^2.1.11" + "@inquirer/password" "^2.1.11" + "@inquirer/rawlist" "^2.1.11" + "@inquirer/select" "^2.3.7" + +"@inquirer/rawlist@^2.1.11": + "integrity" "sha512-pb6w9pWrm7EfnYDgQObOurh2d2YH07+eDo3xQBsNAM2GRhliz6wFXGi1thKQ4bN6B0xDd6C3tBsjdr3obsCl3Q==" + "resolved" "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.2.4.tgz" + "version" "2.2.4" + dependencies: + "@inquirer/core" "^9.0.10" + "@inquirer/type" "^1.5.2" + "yoctocolors-cjs" "^2.1.2" + +"@inquirer/select@^2.3.7": + "integrity" "sha512-JH7XqPEkBpNWp3gPCqWqY8ECbyMoFcCZANlL6pV9hf59qK6dGmkOlx1ydyhY+KZ0c5X74+W6Mtp+nm2QX0/MAQ==" + "resolved" "https://registry.npmjs.org/@inquirer/select/-/select-2.4.7.tgz" + "version" "2.4.7" + dependencies: + "@inquirer/core" "^9.0.10" + "@inquirer/figures" "^1.0.5" + "@inquirer/type" "^1.5.2" + "ansi-escapes" "^4.3.2" + "yoctocolors-cjs" "^2.1.2" + +"@inquirer/type@^1.3.3", "@inquirer/type@^1.5.2": + "integrity" "sha512-w9qFkumYDCNyDZmNQjf/n6qQuvQ4dMC3BJesY4oF+yr0CxR5vxujflAVeIcS6U336uzi9GM0kAfZlLrZ9UTkpA==" + "resolved" "https://registry.npmjs.org/@inquirer/type/-/type-1.5.2.tgz" + "version" "1.5.2" + dependencies: + "mute-stream" "^1.0.0" "@internationalized/number@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.5.2.tgz#2edc8e830268dca7283dad6def728f34eb5b7fdc" - integrity sha512-4FGHTi0rOEX1giSkt5MH4/te0eHBq3cvAYsfLlpguV6pzJAReXymiYpE5wPCqKqjkUO3PIsyvk+tBiIV1pZtbA== + "integrity" "sha512-4FGHTi0rOEX1giSkt5MH4/te0eHBq3cvAYsfLlpguV6pzJAReXymiYpE5wPCqKqjkUO3PIsyvk+tBiIV1pZtbA==" + "resolved" "https://registry.npmjs.org/@internationalized/number/-/number-3.5.2.tgz" + "version" "3.5.2" dependencies: "@swc/helpers" "^0.5.0" "@ioredis/commands@^1.1.1": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" - integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== + "integrity" "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" + "resolved" "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz" + "version" "1.2.0" "@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + "integrity" "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==" + "resolved" "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + "version" "8.0.2" dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "string-width" "^5.1.2" + "string-width-cjs" "npm:string-width@^4.2.0" + "strip-ansi" "^7.0.1" + "strip-ansi-cjs" "npm:strip-ansi@^6.0.1" + "wrap-ansi" "^8.1.0" + "wrap-ansi-cjs" "npm:wrap-ansi@^7.0.0" "@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" + "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + "version" "1.1.0" dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" + "camelcase" "^5.3.1" + "find-up" "^4.1.0" + "get-package-type" "^0.1.0" + "js-yaml" "^3.13.1" + "resolve-from" "^5.0.0" "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + "version" "0.1.3" "@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + "integrity" "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==" + "resolved" "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" + "chalk" "^4.0.0" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + "slash" "^3.0.0" -"@jest/core@^29.4.3", "@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== +"@jest/core@^29.7.0": + "integrity" "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==" + "resolved" "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/console" "^29.7.0" "@jest/reporters" "^29.7.0" @@ -2912,80 +1971,80 @@ "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.4.3", "@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + "ansi-escapes" "^4.2.1" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "exit" "^0.1.2" + "graceful-fs" "^4.2.9" + "jest-changed-files" "^29.7.0" + "jest-config" "^29.7.0" + "jest-haste-map" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-regex-util" "^29.6.3" + "jest-resolve" "^29.7.0" + "jest-resolve-dependencies" "^29.7.0" + "jest-runner" "^29.7.0" + "jest-runtime" "^29.7.0" + "jest-snapshot" "^29.7.0" + "jest-util" "^29.7.0" + "jest-validate" "^29.7.0" + "jest-watcher" "^29.7.0" + "micromatch" "^4.0.4" + "pretty-format" "^29.7.0" + "slash" "^3.0.0" + "strip-ansi" "^6.0.0" + +"@jest/environment@^29.7.0": + "integrity" "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==" + "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.7.0" + "jest-mock" "^29.7.0" "@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + "integrity" "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==" + "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + "version" "29.7.0" dependencies: - jest-get-type "^29.6.3" + "jest-get-type" "^29.6.3" "@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + "integrity" "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==" + "resolved" "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" + "version" "29.7.0" dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" + "expect" "^29.7.0" + "jest-snapshot" "^29.7.0" -"@jest/fake-timers@^29.4.3", "@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== +"@jest/fake-timers@^29.7.0": + "integrity" "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==" + "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/types" "^29.6.3" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-mock" "^29.7.0" + "jest-util" "^29.7.0" "@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + "integrity" "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==" + "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/environment" "^29.7.0" "@jest/expect" "^29.7.0" "@jest/types" "^29.6.3" - jest-mock "^29.7.0" + "jest-mock" "^29.7.0" "@jest/reporters@^29.4.1", "@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + "integrity" "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==" + "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" + "version" "29.7.0" dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^29.7.0" @@ -2994,192 +2053,212 @@ "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" + "chalk" "^4.0.0" + "collect-v8-coverage" "^1.0.0" + "exit" "^0.1.2" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "istanbul-lib-coverage" "^3.0.0" + "istanbul-lib-instrument" "^6.0.0" + "istanbul-lib-report" "^3.0.0" + "istanbul-lib-source-maps" "^4.0.0" + "istanbul-reports" "^3.1.3" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + "jest-worker" "^29.7.0" + "slash" "^3.0.0" + "string-length" "^4.0.1" + "strip-ansi" "^6.0.0" + "v8-to-istanbul" "^9.0.1" "@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + "integrity" "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==" + "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + "version" "29.6.3" dependencies: "@sinclair/typebox" "^0.27.8" "@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + "integrity" "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==" + "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" + "version" "29.6.3" dependencies: "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" + "callsites" "^3.0.0" + "graceful-fs" "^4.2.9" "@jest/test-result@^29.4.1", "@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + "integrity" "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==" + "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/console" "^29.7.0" "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" + "collect-v8-coverage" "^1.0.0" "@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + "integrity" "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==" + "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^29.7.0" + "slash" "^3.0.0" -"@jest/transform@^29.3.1", "@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== +"@jest/transform@^29.7.0": + "integrity" "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==" + "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" + "version" "29.7.0" dependencies: "@babel/core" "^7.11.6" "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.4.3", "@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + "babel-plugin-istanbul" "^6.1.1" + "chalk" "^4.0.0" + "convert-source-map" "^2.0.0" + "fast-json-stable-stringify" "^2.1.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^29.7.0" + "jest-regex-util" "^29.6.3" + "jest-util" "^29.7.0" + "micromatch" "^4.0.4" + "pirates" "^4.0.4" + "slash" "^3.0.0" + "write-file-atomic" "^4.0.2" + +"@jest/types@^29.0.0", "@jest/types@^29.6.3": + "integrity" "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==" + "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + "version" "29.6.3" dependencies: "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" - chalk "^4.0.0" + "chalk" "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== +"@jridgewell/gen-mapping@^0.3.5": + "integrity" "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" + "version" "0.3.5" dependencies: "@jridgewell/set-array" "^1.2.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + "integrity" "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" + "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" + "version" "3.1.2" "@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "integrity" "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + "version" "1.2.1" "@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + "integrity" "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" + "version" "0.3.6" dependencies: "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "integrity" "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + "version" "1.4.15" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + "integrity" "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + "version" "0.3.25" + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" + "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + "version" "0.3.9" dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== +"@jsonjoy.com/base64@^1.1.1": + "integrity" "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==" + "resolved" "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz" + "version" "1.1.2" + +"@jsonjoy.com/json-pack@^1.0.3": + "integrity" "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==" + "resolved" "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz" + "version" "1.1.0" dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" + "@jsonjoy.com/base64" "^1.1.1" + "@jsonjoy.com/util" "^1.1.2" + "hyperdyperid" "^1.2.0" + "thingies" "^1.20.0" -"@juggle/resize-observer@^3.3.1": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60" - integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA== +"@jsonjoy.com/util@^1.1.2", "@jsonjoy.com/util@^1.3.0": + "integrity" "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==" + "resolved" "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.3.0.tgz" + "version" "1.3.0" "@kurkle/color@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f" - integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw== + "integrity" "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + "resolved" "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz" + "version" "0.3.2" "@leichtgewicht/ip-codec@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" - integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + "integrity" "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz" + "version" "2.0.5" "@levischuck/tiny-cbor@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz#84239ce80e1107b810f1fe9f66546d4f79f31aea" - integrity sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw== + "integrity" "sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==" + "resolved" "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.2.tgz" + "version" "0.2.2" -"@ljharb/through@^2.3.12": - version "2.3.13" - resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.13.tgz#b7e4766e0b65aa82e529be945ab078de79874edc" - integrity sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ== +"@listr2/prompt-adapter-inquirer@2.0.13": + "integrity" "sha512-nAl6teTt7EWSjttNavAnv3uFR3w3vPP3OTYmHyPNHzKhAj2NoBDHmbS3MGpvvO8KXXPASnHjEGrrKrdKTMKPnQ==" + "resolved" "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.13.tgz" + "version" "2.0.13" dependencies: - call-bind "^1.0.7" + "@inquirer/type" "^1.3.3" + +"@lmdb/lmdb-win32-x64@3.0.12": + "integrity" "sha512-CO3MFV8gUx16NU/CyyuumAKblESwvoGVA2XhQKZ976OTOxaTbb8F8D3f0iiZ4MYqsN74jIrFuCmXpPnpjbhfOQ==" + "resolved" "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.12.tgz" + "version" "3.0.12" "@lukeed/csprng@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@lukeed/csprng/-/csprng-1.1.0.tgz#1e3e4bd05c1cc7a0b2ddbd8a03f39f6e4b5e6cfe" - integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== + "integrity" "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==" + "resolved" "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz" + "version" "1.1.0" "@material/animation@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz#14b4f80718f9d405953dfca4376f9bcef609adc6" - integrity sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw== + "integrity" "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==" + "resolved" "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/auto-init@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz#9d1b6ed5d27e0c4c037a0cdc14e73729282d718d" - integrity sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA== + "integrity" "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==" + "resolved" "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/banner@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz#2cf24525e3dd1104f8c311d63c71f2e6200de1fb" - integrity sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA== + "integrity" "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==" + "resolved" "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/button" "15.0.0-canary.7f224ddd4.0" @@ -3192,19 +2271,19 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/base@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz#4960bef078e0c092f5293eb331f732d8e8e9265e" - integrity sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A== + "integrity" "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==" + "resolved" "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/button@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz#8de20a17fa75529f65553d9fb6c4af5d2743fa94" - integrity sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA== + "integrity" "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==" + "resolved" "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/density" "15.0.0-canary.7f224ddd4.0" "@material/dom" "15.0.0-canary.7f224ddd4.0" @@ -3218,12 +2297,12 @@ "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/card@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz#3ac82035f7260ce8b8337402d2102bc254169dff" - integrity sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw== + "integrity" "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==" + "resolved" "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/dom" "15.0.0-canary.7f224ddd4.0" "@material/elevation" "15.0.0-canary.7f224ddd4.0" @@ -3233,12 +2312,12 @@ "@material/shape" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/checkbox@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz#a8223914b244cd7a23d9279b9fce3197a9473e69" - integrity sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ== + "integrity" "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==" + "resolved" "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3250,12 +2329,12 @@ "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/chips@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz#e5f44ba72100188e49075fc701d187ef3e75ba82" - integrity sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ== + "integrity" "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==" + "resolved" "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3272,13 +2351,13 @@ "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - safevalues "^0.3.4" - tslib "^2.1.0" + "safevalues" "^0.3.4" + "tslib" "^2.1.0" "@material/circular-progress@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz#0ee8de2cc989007a6029e60f6c7fb36af222a0ac" - integrity sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow== + "integrity" "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==" + "resolved" "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3287,12 +2366,12 @@ "@material/progress-indicator" "15.0.0-canary.7f224ddd4.0" "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/data-table@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz#fc5417a3e476896e92b8ada4804ef82d373831fa" - integrity sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA== + "integrity" "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==" + "resolved" "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3312,19 +2391,19 @@ "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/density@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz#3fd8625b734597556c2bf18362a709485b4d1899" - integrity sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA== + "integrity" "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==" + "resolved" "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/dialog@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz#13b414c6afa6e015845d1bbf09337d8eb1270465" - integrity sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA== + "integrity" "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==" + "resolved" "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3340,21 +2419,21 @@ "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/dom@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz#4650cdc01439d033073bca09bbe94e5cbdc1a70e" - integrity sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA== + "integrity" "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==" + "resolved" "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/rtl" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/drawer@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz#089efcc9ba1622c6f6acb5e292f2edd9b2482558" - integrity sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g== + "integrity" "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==" + "resolved" "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3367,24 +2446,24 @@ "@material/shape" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/elevation@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz#b8fdde1b096dd8352440fc7a616c137d18e9c687" - integrity sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA== + "integrity" "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==" + "resolved" "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/fab@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz#e99acd7dc990e81ccb0deb834e6b6c3bd1747ea8" - integrity sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q== + "integrity" "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==" + "resolved" "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/dom" "15.0.0-canary.7f224ddd4.0" @@ -3398,19 +2477,19 @@ "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/feature-targeting@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz#bb1a326dad1cfd113459d7cb0096c0ab7ce0c951" - integrity sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew== + "integrity" "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==" + "resolved" "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/floating-label@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz#c47c9df4424bfdcb824ba91096b130bc574c7127" - integrity sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ== + "integrity" "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==" + "resolved" "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3419,21 +2498,21 @@ "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/focus-ring@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz#b1822b45a99009e9854a9e6c9f013708d159039d" - integrity sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg== + "integrity" "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==" + "resolved" "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/dom" "15.0.0-canary.7f224ddd4.0" "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/form-field@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz#0f3c332361ca5e00fdafb9f854cc5cebe445a340" - integrity sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg== + "integrity" "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==" + "resolved" "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" @@ -3441,12 +2520,12 @@ "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/icon-button@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz#75a31e0b1287f98fba4355554725248340521c04" - integrity sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw== + "integrity" "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==" + "resolved" "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/density" "15.0.0-canary.7f224ddd4.0" @@ -3458,41 +2537,41 @@ "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/image-list@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz#36bb04e6cf16a293dfb850d0fce585b1d2c724c3" - integrity sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw== + "integrity" "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==" + "resolved" "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/shape" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/layout-grid@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz#656c39a44a715331ce11fe0aea281bc0e6c793aa" - integrity sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg== + "integrity" "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==" + "resolved" "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/line-ripple@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz#66487ff758834306180a7449ce4487103bcfe1d8" - integrity sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg== + "integrity" "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==" + "resolved" "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/linear-progress@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz#b18179c6790db14870505e4362184d01ee3b9cb3" - integrity sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg== + "integrity" "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==" + "resolved" "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3501,12 +2580,12 @@ "@material/progress-indicator" "15.0.0-canary.7f224ddd4.0" "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/list@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz#e096d903ddbf06dd0177a317953d902133395b5e" - integrity sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q== + "integrity" "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==" + "resolved" "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/density" "15.0.0-canary.7f224ddd4.0" @@ -3518,12 +2597,12 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/menu-surface@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz#80678f927beec0ec22e68cb05b9242dc0b99543a" - integrity sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg== + "integrity" "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==" + "resolved" "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3532,12 +2611,12 @@ "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/shape" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/menu@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz#f7a2fc94640afae6e816a75abf5dfc77d0bf9920" - integrity sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ== + "integrity" "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==" + "resolved" "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/dom" "15.0.0-canary.7f224ddd4.0" @@ -3550,12 +2629,12 @@ "@material/shape" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/notched-outline@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz#d13391d4e211c077980e2fed81d81cc81a6a84fa" - integrity sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw== + "integrity" "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==" + "resolved" "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" @@ -3563,19 +2642,19 @@ "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/shape" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/progress-indicator@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz#6d70bf1ecf406c1da317402021a2970506921077" - integrity sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w== + "integrity" "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==" + "resolved" "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/radio@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz#57834ac2d3441d1036041a94fe00b80c44d26b56" - integrity sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A== + "integrity" "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==" + "resolved" "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3586,12 +2665,12 @@ "@material/ripple" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/ripple@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz#5ce82710d337314f343d0b80e39f33a109e42801" - integrity sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg== + "integrity" "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==" + "resolved" "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3599,20 +2678,20 @@ "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/rtl@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz#25cf5447c2f59eea80bdb83a71ab19f15ff32e3d" - integrity sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA== + "integrity" "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==" + "resolved" "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/segmented-button@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz#c36ca64ea8dfeb73bfdfdddb08b436e6c29f7071" - integrity sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg== + "integrity" "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==" + "resolved" "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/elevation" "15.0.0-canary.7f224ddd4.0" @@ -3621,12 +2700,12 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/touch-target" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/select@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz#cf7fe97b9e4b47d1a53ee5fa1d21c3fe2245361c" - integrity sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ== + "integrity" "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==" + "resolved" "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3646,22 +2725,22 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/shape@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz#f4cb9f8f779449b12d69d8a303bab54211db7e52" - integrity sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw== + "integrity" "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==" + "resolved" "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/slider@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz#beba0d242fd110f063422fba40be3850cda01e44" - integrity sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw== + "integrity" "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==" + "resolved" "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3673,12 +2752,12 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/snackbar@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz#55765e8755d031186954fed98c2fb6209e82bce0" - integrity sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ== + "integrity" "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==" + "resolved" "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3693,12 +2772,12 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/switch@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz#71fa2bd8819917dae6991e118aef819d780d690e" - integrity sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA== + "integrity" "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==" + "resolved" "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3712,13 +2791,13 @@ "@material/shape" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" - safevalues "^0.3.4" - tslib "^2.1.0" + "safevalues" "^0.3.4" + "tslib" "^2.1.0" "@material/tab-bar@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz#34fb2585163c4da265ce6ca318e6bf6efd7caf1b" - integrity sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA== + "integrity" "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==" + "resolved" "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3731,35 +2810,35 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/tab-indicator@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz#85f91e23142249d18379cf6415d3b2385ccdee0e" - integrity sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w== + "integrity" "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==" + "resolved" "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/tab-scroller@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz#f0fc898fc8f3ca293676d04179ed2b1d03cb38a1" - integrity sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg== + "integrity" "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==" + "resolved" "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/dom" "15.0.0-canary.7f224ddd4.0" "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/tab" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/tab@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz#77950384cbf0a418dc59352e244c0c3ec0ee83cb" - integrity sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ== + "integrity" "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==" + "resolved" "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/elevation" "15.0.0-canary.7f224ddd4.0" @@ -3771,12 +2850,12 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/textfield@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz#db502c644180f31afc6060bc5baaafab303d6608" - integrity sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw== + "integrity" "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==" + "resolved" "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3792,27 +2871,27 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/theme@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz#7523997eb51a21bffd598aa84fd1e76b7a0bb980" - integrity sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ== + "integrity" "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==" + "resolved" "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/tokens@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz#4ae8b300fc3ea5b9a6e53c3257a5aa0efd3442a3" - integrity sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw== + "integrity" "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==" + "resolved" "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/elevation" "15.0.0-canary.7f224ddd4.0" "@material/tooltip@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz#78bf4353b426030071944cdef45f1c2a023537f6" - integrity sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w== + "integrity" "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==" + "resolved" "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3825,13 +2904,13 @@ "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/tokens" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - safevalues "^0.3.4" - tslib "^2.1.0" + "safevalues" "^0.3.4" + "tslib" "^2.1.0" "@material/top-app-bar@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz#ac042d558f0763e8e9f8e48504eac7062882f353" - integrity sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA== + "integrity" "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==" + "resolved" "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/animation" "15.0.0-canary.7f224ddd4.0" "@material/base" "15.0.0-canary.7f224ddd4.0" @@ -3841,515 +2920,602 @@ "@material/shape" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" "@material/typography" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/touch-target@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz#ab80eeec967fa1444dc5d0198c4c826916a9ff86" - integrity sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA== + "integrity" "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==" + "resolved" "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/base" "15.0.0-canary.7f224ddd4.0" "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/rtl" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" "@material/typography@15.0.0-canary.7f224ddd4.0": - version "15.0.0-canary.7f224ddd4.0" - resolved "https://registry.yarnpkg.com/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz#1191633c70ad0ee0e162feacb5e6efaf42a52cef" - integrity sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ== + "integrity" "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==" + "resolved" "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz" + "version" "15.0.0-canary.7f224ddd4.0" dependencies: "@material/feature-targeting" "15.0.0-canary.7f224ddd4.0" "@material/theme" "15.0.0-canary.7f224ddd4.0" - tslib "^2.1.0" + "tslib" "^2.1.0" -"@mdx-js/react@^2.1.5": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.3.0.tgz#4208bd6d70f0d0831def28ef28c26149b03180b3" - integrity sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g== +"@mdx-js/react@^3.0.0": + "integrity" "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==" + "resolved" "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz" + "version" "3.0.1" dependencies: "@types/mdx" "^2.0.0" - "@types/react" ">=16" -"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" - integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== - -"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" - integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" - integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== - -"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" - integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== - -"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" - integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== +"@module-federation/bridge-react-webpack-plugin@0.2.8": + "integrity" "sha512-6G1qTo1HWvRcN5fzE+SZgvgzSPoq5YqNx8hFL8BttJmnd3wj4SUOFiikAsXhdVrzSK+Zuzg6pipkiLH1m+pbtw==" + "resolved" "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/sdk" "0.2.8" + +"@module-federation/dts-plugin@0.2.8": + "integrity" "sha512-qY1Wbqo0yu9nh6KR8K19t5T4tYtlUbmcNdcaCweISCyAbH99TrhpQkJ89NY0TLtnxQ6uayIYayqAWS7vzyDXVw==" + "resolved" "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/managers" "0.2.8" + "@module-federation/sdk" "0.2.8" + "@module-federation/third-party-dts-extractor" "0.2.8" + "adm-zip" "^0.5.10" + "ansi-colors" "^4.1.3" + "axios" "^1.6.7" + "chalk" "3.0.0" + "fs-extra" "9.1.0" + "isomorphic-ws" "5.0.0" + "koa" "2.11.0" + "lodash.clonedeepwith" "4.5.0" + "log4js" "6.9.1" + "node-schedule" "2.1.1" + "rambda" "^9.1.0" + "ws" "8.17.1" + +"@module-federation/enhanced@^0.2.3", "@module-federation/enhanced@~0.2.3": + "integrity" "sha512-6fGM/GiKw6LZiBe6DF8Petz6ih/Yyf3q2htLrx+hrWoDWfWEoWlLvoCUsVkY2UgMCLKid7Fm3Auc4w8A4aRjvQ==" + "resolved" "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/bridge-react-webpack-plugin" "0.2.8" + "@module-federation/dts-plugin" "0.2.8" + "@module-federation/managers" "0.2.8" + "@module-federation/manifest" "0.2.8" + "@module-federation/rspack" "0.2.8" + "@module-federation/runtime-tools" "0.2.8" + "@module-federation/sdk" "0.2.8" + "btoa" "^1.2.1" + "upath" "2.0.1" + +"@module-federation/managers@0.2.8": + "integrity" "sha512-S5GXqt2Vrs1+uNXHw7UzZ7m3fs8H3nxNsNGQ0j5+HiT5yA7uRTY1AZJZCGAHzG6XImJ1DzL/SW1acM2Hwj0aAw==" + "resolved" "https://registry.npmjs.org/@module-federation/managers/-/managers-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/sdk" "0.2.8" + "find-pkg" "2.0.0" + "fs-extra" "9.1.0" + +"@module-federation/manifest@0.2.8": + "integrity" "sha512-kw4PeAldkOuGCWfCnDzZwPHUx5qv9+WztY5+TEbsgXc5E+/e2NDA6Gg3eT8zUGeexeGdab3f+DuN9ZClZJYVGA==" + "resolved" "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/dts-plugin" "0.2.8" + "@module-federation/managers" "0.2.8" + "@module-federation/sdk" "0.2.8" + "chalk" "3.0.0" + "find-pkg" "2.0.0" + +"@module-federation/rspack@0.2.8": + "integrity" "sha512-5Bofm3cY7OOwO2DT5TevITd+HAA03zsY1wwsMb1BP6NkS/ukUtsjuRo2Anua0RkHBEIx+Dv5rpqOn7qSlOm1Fg==" + "resolved" "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/bridge-react-webpack-plugin" "0.2.8" + "@module-federation/dts-plugin" "0.2.8" + "@module-federation/managers" "0.2.8" + "@module-federation/manifest" "0.2.8" + "@module-federation/runtime-tools" "0.2.8" + "@module-federation/sdk" "0.2.8" + +"@module-federation/runtime-tools@0.2.8": + "integrity" "sha512-RSNtyhcNvnTQIdzRUIOGue6WQA/9mL9cY/n0dEd357L/lmLCvfHiZbowlkacckDzyApariUHxzkHrU2Q6kzoew==" + "resolved" "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/runtime" "0.2.8" + "@module-federation/webpack-bundler-runtime" "0.2.8" + +"@module-federation/runtime@0.2.8": + "integrity" "sha512-8xmA/+z1zD09F5qU8VnSWLExqTCVWoHOguXsCX79kkqp7i0c+D2YaebWzlQ2kku+DU+0VIzXpQ3BBcumZ3v3wQ==" + "resolved" "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/sdk" "0.2.8" + +"@module-federation/sdk@^0.2.3", "@module-federation/sdk@0.2.8": + "integrity" "sha512-eGMnJxdRDgt6dtMv8gkAlzEbTPWVHb3AHUNUG0w56wcbIF0RHC6kmvpHpSQyq4DVGWv3U4g/ZiH5BvBlqEelDQ==" + "resolved" "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.2.8.tgz" + "version" "0.2.8" + +"@module-federation/third-party-dts-extractor@0.2.8": + "integrity" "sha512-VGXvdsRlljbFUfGeA448CxR7i6fLWJN07ViRuNXYYXc19e4bQVhBHzrf7eCv9ahcf/tA/8YYCS2h11ixbD691A==" + "resolved" "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "find-pkg" "2.0.0" + "fs-extra" "9.1.0" + "resolve" "1.22.8" + +"@module-federation/webpack-bundler-runtime@0.2.8": + "integrity" "sha512-tiW1kD/V3QNul1/O3Y3lwQv/r4sUU4jvWZykrLvHYt2vuoGe1d4tHnSIFEVEAi9FSpuDwdRK2+NaWBr92gIS7Q==" + "resolved" "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.2.8.tgz" + "version" "0.2.8" + dependencies: + "@module-federation/runtime" "0.2.8" + "@module-federation/sdk" "0.2.8" "@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" - integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== + "integrity" "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==" + "resolved" "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz" + "version" "3.0.2" -"@ndelangen/get-tarball@^3.0.7": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz#727ff4454e65f34707e742a59e5e6b1f525d8964" - integrity sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA== +"@napi-rs/wasm-runtime@0.2.4": + "integrity" "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==" + "resolved" "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz" + "version" "0.2.4" dependencies: - gunzip-maybe "^1.4.2" - pump "^3.0.0" - tar-fs "^2.1.1" + "@emnapi/core" "^1.1.0" + "@emnapi/runtime" "^1.1.0" + "@tybys/wasm-util" "^0.9.0" "@nestjs/bull-shared@^10.0.1": - version "10.1.1" - resolved "https://registry.yarnpkg.com/@nestjs/bull-shared/-/bull-shared-10.1.1.tgz#f2e20e9726819a86efcddbb1aeef28ed91206185" - integrity sha512-su7eThDrSz1oQagEi8l+1CyZ7N6nMgmyAX0DuZoXqT1KEVEDqGX7x80RlPVF60m/8SYOskckGMjJROSfNQcErw== + "integrity" "sha512-su7eThDrSz1oQagEi8l+1CyZ7N6nMgmyAX0DuZoXqT1KEVEDqGX7x80RlPVF60m/8SYOskckGMjJROSfNQcErw==" + "resolved" "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-10.1.1.tgz" + "version" "10.1.1" dependencies: - tslib "2.6.2" + "tslib" "2.6.2" "@nestjs/bull@10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@nestjs/bull/-/bull-10.0.1.tgz#592073d148a98f3e0b2268a81dc023db29ef9b66" - integrity sha512-1GcJ8BkHDgQdBMZ7SqAqgUHiFnISXmpGvewFeTc8wf87JLk2PweiKv9j9/KQKU+NI237pCe82XB0bXzTnsdxSw== + "integrity" "sha512-1GcJ8BkHDgQdBMZ7SqAqgUHiFnISXmpGvewFeTc8wf87JLk2PweiKv9j9/KQKU+NI237pCe82XB0bXzTnsdxSw==" + "resolved" "https://registry.npmjs.org/@nestjs/bull/-/bull-10.0.1.tgz" + "version" "10.0.1" dependencies: "@nestjs/bull-shared" "^10.0.1" - tslib "2.6.0" + "tslib" "2.6.0" "@nestjs/cache-manager@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@nestjs/cache-manager/-/cache-manager-2.1.0.tgz#e4dadc4ba9c02c059db4dac5e0b5513466e2895a" - integrity sha512-9kep3a8Mq5cMuXN/anGhSYc0P48CRBXk5wyJJRBFxhNkCH8AIzZF4CASGVDIEMmm3OjVcEUHojjyJwCODS17Qw== + "integrity" "sha512-9kep3a8Mq5cMuXN/anGhSYc0P48CRBXk5wyJJRBFxhNkCH8AIzZF4CASGVDIEMmm3OjVcEUHojjyJwCODS17Qw==" + "resolved" "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-2.1.0.tgz" + "version" "2.1.0" -"@nestjs/common@10.1.3": - version "10.1.3" - resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-10.1.3.tgz#7f80d7c011e94bfb2177100cc8862e4fc65a6630" - integrity sha512-xSyXBwgcmiFwQqek1Urw/AL3pRPq9bp/tpgfTxmnJg3gP6XNUbx1fDr0de50irXgZYzFKfVFo9ptC3b2du5YKA== +"@nestjs/common@^10.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^9.0.0 || ^10.0.0", "@nestjs/common@10.1.3": + "integrity" "sha512-xSyXBwgcmiFwQqek1Urw/AL3pRPq9bp/tpgfTxmnJg3gP6XNUbx1fDr0de50irXgZYzFKfVFo9ptC3b2du5YKA==" + "resolved" "https://registry.npmjs.org/@nestjs/common/-/common-10.1.3.tgz" + "version" "10.1.3" dependencies: - uid "2.0.2" - iterare "1.2.1" - tslib "2.6.1" + "iterare" "1.2.1" + "tslib" "2.6.1" + "uid" "2.0.2" "@nestjs/config@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@nestjs/config/-/config-3.0.0.tgz#154ddbaf2b97201a94a3c84757c352c405718cb4" - integrity sha512-fzASk1Uv6AjdE6uA1na8zpqRCXAhRpcfgpCVv3SAKlgJ3VR3bEjcI4G17WHLgLBsmPzI1ofdkSI451WLD1F1Rw== + "integrity" "sha512-fzASk1Uv6AjdE6uA1na8zpqRCXAhRpcfgpCVv3SAKlgJ3VR3bEjcI4G17WHLgLBsmPzI1ofdkSI451WLD1F1Rw==" + "resolved" "https://registry.npmjs.org/@nestjs/config/-/config-3.0.0.tgz" + "version" "3.0.0" dependencies: - dotenv "16.1.4" - dotenv-expand "10.0.0" - lodash "4.17.21" - uuid "9.0.0" + "dotenv" "16.1.4" + "dotenv-expand" "10.0.0" + "lodash" "4.17.21" + "uuid" "9.0.0" -"@nestjs/core@10.1.3": - version "10.1.3" - resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-10.1.3.tgz#6f74ac04695847976dd84836d8063624a793c127" - integrity sha512-VzK54TuacC3Vmq3b5xTyMVTlDNJeKbjpKfV9fNqm4TbIBm8ZPo3FC0osJAbAK4XwbVvv2Flq1yA3CutasupVjw== +"@nestjs/core@^10.0.0", "@nestjs/core@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/core@^9.0.0 || ^10.0.0", "@nestjs/core@10.1.3": + "integrity" "sha512-VzK54TuacC3Vmq3b5xTyMVTlDNJeKbjpKfV9fNqm4TbIBm8ZPo3FC0osJAbAK4XwbVvv2Flq1yA3CutasupVjw==" + "resolved" "https://registry.npmjs.org/@nestjs/core/-/core-10.1.3.tgz" + "version" "10.1.3" dependencies: - uid "2.0.2" "@nuxtjs/opencollective" "0.3.2" - fast-safe-stringify "2.1.1" - iterare "1.2.1" - path-to-regexp "3.2.0" - tslib "2.6.1" + "fast-safe-stringify" "2.1.1" + "iterare" "1.2.1" + "path-to-regexp" "3.2.0" + "tslib" "2.6.1" + "uid" "2.0.2" "@nestjs/event-emitter@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nestjs/event-emitter/-/event-emitter-2.0.4.tgz#de7d3986cfeb82639bb95181fab4fe5525437c74" - integrity sha512-quMiw8yOwoSul0pp3mOonGz8EyXWHSBTqBy8B0TbYYgpnG1Ix2wGUnuTksLWaaBiiOTDhciaZ41Y5fJZsSJE1Q== + "integrity" "sha512-quMiw8yOwoSul0pp3mOonGz8EyXWHSBTqBy8B0TbYYgpnG1Ix2wGUnuTksLWaaBiiOTDhciaZ41Y5fJZsSJE1Q==" + "resolved" "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.0.4.tgz" + "version" "2.0.4" dependencies: - eventemitter2 "6.4.9" + "eventemitter2" "6.4.9" "@nestjs/jwt@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nestjs/jwt/-/jwt-10.1.0.tgz#7899b68d68b998cc140bc0af392c63fc00755236" - integrity sha512-iLwCGS25ybUxGS7i5j/Mwuyzvp/WxJftHlm8aLEBv5GV92apz6L1QVjxLdZrqXbzo++C8gdJauhzil8qitY+6w== + "integrity" "sha512-iLwCGS25ybUxGS7i5j/Mwuyzvp/WxJftHlm8aLEBv5GV92apz6L1QVjxLdZrqXbzo++C8gdJauhzil8qitY+6w==" + "resolved" "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.1.0.tgz" + "version" "10.1.0" dependencies: "@types/jsonwebtoken" "9.0.2" - jsonwebtoken "9.0.0" + "jsonwebtoken" "9.0.0" "@nestjs/passport@10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@nestjs/passport/-/passport-10.0.3.tgz#26ec5b2167d364e04962c115fcef80d10e185367" - integrity sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ== + "integrity" "sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==" + "resolved" "https://registry.npmjs.org/@nestjs/passport/-/passport-10.0.3.tgz" + "version" "10.0.3" -"@nestjs/platform-express@10.1.3": - version "10.1.3" - resolved "https://registry.yarnpkg.com/@nestjs/platform-express/-/platform-express-10.1.3.tgz#d1f644e86f2bc45c7529b9eed7669613f4392e99" - integrity sha512-RSf7ooCrxiWJlWl3CLfpaYmAf3U0tRsN7pJakujWdvzVJU2EzVZTLcy1MtnSg/HBm9/Rvg98VI5QI6oOhOpt+A== +"@nestjs/platform-express@^10.0.0", "@nestjs/platform-express@10.1.3": + "integrity" "sha512-RSf7ooCrxiWJlWl3CLfpaYmAf3U0tRsN7pJakujWdvzVJU2EzVZTLcy1MtnSg/HBm9/Rvg98VI5QI6oOhOpt+A==" + "resolved" "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.1.3.tgz" + "version" "10.1.3" dependencies: - body-parser "1.20.2" - cors "2.8.5" - express "4.18.2" - multer "1.4.4-lts.1" - tslib "2.6.1" + "body-parser" "1.20.2" + "cors" "2.8.5" + "express" "4.18.2" + "multer" "1.4.4-lts.1" + "tslib" "2.6.1" "@nestjs/schedule@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@nestjs/schedule/-/schedule-3.0.2.tgz#0be6ff93adfedf081b216a2c69a70ea69a6acf78" - integrity sha512-INhpzkyquosLbVrXx4v+rfAnomwBTgKQvs7e9BZ2LSZdWQOqCQD2PmvWDiu8c4wdJIH6wcWQh98w5KxIcKuVBA== + "integrity" "sha512-INhpzkyquosLbVrXx4v+rfAnomwBTgKQvs7e9BZ2LSZdWQOqCQD2PmvWDiu8c4wdJIH6wcWQh98w5KxIcKuVBA==" + "resolved" "https://registry.npmjs.org/@nestjs/schedule/-/schedule-3.0.2.tgz" + "version" "3.0.2" dependencies: - cron "2.4.0" - uuid "9.0.0" - -"@nestjs/schematics@10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@nestjs/schematics/-/schematics-10.0.1.tgz#c44f763186de621ec8b3974891bbb27d3c6df04b" - integrity sha512-buxpYtSwOmWyf0nUJWJCkCkYITwbOfIEKHTnGS7sDbcfaajrOFXb5pPAGD2E1CUb3C1+NkQIURPKzs0IouZTQg== - dependencies: - "@angular-devkit/core" "16.1.0" - "@angular-devkit/schematics" "16.1.0" - comment-json "4.2.3" - jsonc-parser "3.2.0" - pluralize "8.0.0" + "cron" "2.4.0" + "uuid" "9.0.0" "@nestjs/schematics@^9.1.0": - version "9.2.0" - resolved "https://registry.yarnpkg.com/@nestjs/schematics/-/schematics-9.2.0.tgz#f840054b5ae4b0b4e70aa9f72c09c3cf388f2512" - integrity sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw== + "integrity" "sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==" + "resolved" "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.2.0.tgz" + "version" "9.2.0" dependencies: "@angular-devkit/core" "16.0.1" "@angular-devkit/schematics" "16.0.1" - jsonc-parser "3.2.0" - pluralize "8.0.0" + "jsonc-parser" "3.2.0" + "pluralize" "8.0.0" + +"@nestjs/schematics@10.0.1": + "integrity" "sha512-buxpYtSwOmWyf0nUJWJCkCkYITwbOfIEKHTnGS7sDbcfaajrOFXb5pPAGD2E1CUb3C1+NkQIURPKzs0IouZTQg==" + "resolved" "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.1.tgz" + "version" "10.0.1" + dependencies: + "@angular-devkit/core" "16.1.0" + "@angular-devkit/schematics" "16.1.0" + "comment-json" "4.2.3" + "jsonc-parser" "3.2.0" + "pluralize" "8.0.0" "@nestjs/serve-static@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@nestjs/serve-static/-/serve-static-4.0.0.tgz#3baeea982f66d64718a59f3d8f67281b74d4dbdd" - integrity sha512-8cTrNV2ngdHIjiLNsXePnw0+KY1ThrZGz/WeyAG5gIvmZNDbnZBOrPoYlKL+MOzlXlQStxR5jKLYmn+nJeoncQ== + "integrity" "sha512-8cTrNV2ngdHIjiLNsXePnw0+KY1ThrZGz/WeyAG5gIvmZNDbnZBOrPoYlKL+MOzlXlQStxR5jKLYmn+nJeoncQ==" + "resolved" "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-4.0.0.tgz" + "version" "4.0.0" dependencies: - path-to-regexp "0.2.5" + "path-to-regexp" "0.2.5" "@nestjs/testing@10.1.3": - version "10.1.3" - resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-10.1.3.tgz#596a1dc580373b3b0b070ac73bf70e45f80197dd" - integrity sha512-zMrO9xLPYnKtC6q1diWubuMshIp0v2aGHa58jcIfZaAlJlU/6RKsgCOiFQ42aFzxUEBRWF0LBF0aiwt04LKMyQ== + "integrity" "sha512-zMrO9xLPYnKtC6q1diWubuMshIp0v2aGHa58jcIfZaAlJlU/6RKsgCOiFQ42aFzxUEBRWF0LBF0aiwt04LKMyQ==" + "resolved" "https://registry.npmjs.org/@nestjs/testing/-/testing-10.1.3.tgz" + "version" "10.1.3" dependencies: - tslib "2.6.1" + "tslib" "2.6.1" -"@ngtools/webpack@17.3.8": - version "17.3.8" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-17.3.8.tgz#96c0f99055910dd21438d7697d625fdeb7261015" - integrity sha512-CjSVVa/9fzMpEDQP01SC4colKCbZwj7vUq0H2bivp8jVsmd21x9Fu0gDBH0Y9NdfAIm4eGZvmiZKMII3vIOaYQ== +"@ngtools/webpack@18.1.1": + "integrity" "sha512-mjlfnWcHtBZJUJaVyffJZZL8U1o1XUQwrFIKeiFUeatLDsjtv8EbLW9Ed1v3eAJyVuaTNKpsdZma1XdxzeLONw==" + "resolved" "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.1.1.tgz" + "version" "18.1.1" "@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" dependencies: "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "run-parallel" "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" dependencies: "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "fastq" "^1.6.0" "@npmcli/agent@^2.0.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" - integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + "integrity" "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==" + "resolved" "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz" + "version" "2.2.2" dependencies: - agent-base "^7.1.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.1" - lru-cache "^10.0.1" - socks-proxy-agent "^8.0.3" + "agent-base" "^7.1.0" + "http-proxy-agent" "^7.0.0" + "https-proxy-agent" "^7.0.1" + "lru-cache" "^10.0.1" + "socks-proxy-agent" "^8.0.3" "@npmcli/fs@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" - integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + "integrity" "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==" + "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz" + "version" "3.1.1" dependencies: - semver "^7.3.5" + "semver" "^7.3.5" "@npmcli/git@^5.0.0": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.7.tgz#7ff675e33b4dc0b0adb1f0c4aa302109efc06463" - integrity sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA== + "integrity" "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==" + "resolved" "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz" + "version" "5.0.7" dependencies: "@npmcli/promise-spawn" "^7.0.0" - lru-cache "^10.0.1" - npm-pick-manifest "^9.0.0" - proc-log "^4.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^4.0.0" + "lru-cache" "^10.0.1" + "npm-pick-manifest" "^9.0.0" + "proc-log" "^4.0.0" + "promise-inflight" "^1.0.1" + "promise-retry" "^2.0.1" + "semver" "^7.3.5" + "which" "^4.0.0" "@npmcli/installed-package-contents@^2.0.1": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" - integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== + "integrity" "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==" + "resolved" "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz" + "version" "2.1.0" dependencies: - npm-bundled "^3.0.0" - npm-normalize-package-bin "^3.0.0" + "npm-bundled" "^3.0.0" + "npm-normalize-package-bin" "^3.0.0" "@npmcli/node-gyp@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" - integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + "integrity" "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==" + "resolved" "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz" + "version" "3.0.0" -"@npmcli/package-json@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.1.0.tgz#10d117b5fb175acc14c70901a151c52deffc843e" - integrity sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ== +"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": + "integrity" "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==" + "resolved" "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz" + "version" "5.2.0" dependencies: "@npmcli/git" "^5.0.0" - glob "^10.2.2" - hosted-git-info "^7.0.0" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - proc-log "^4.0.0" - semver "^7.5.3" + "glob" "^10.2.2" + "hosted-git-info" "^7.0.0" + "json-parse-even-better-errors" "^3.0.0" + "normalize-package-data" "^6.0.0" + "proc-log" "^4.0.0" + "semver" "^7.5.3" "@npmcli/promise-spawn@^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" - integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== + "integrity" "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==" + "resolved" "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz" + "version" "7.0.2" dependencies: - which "^4.0.0" + "which" "^4.0.0" -"@npmcli/redact@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/redact/-/redact-1.1.0.tgz#78e53a6a34f013543a73827a07ebdc3a6f10454b" - integrity sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ== +"@npmcli/redact@^2.0.0": + "integrity" "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==" + "resolved" "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz" + "version" "2.0.1" -"@npmcli/run-script@^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-7.0.4.tgz#9f29aaf4bfcf57f7de2a9e28d1ef091d14b2e6eb" - integrity sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg== +"@npmcli/run-script@^8.0.0": + "integrity" "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==" + "resolved" "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz" + "version" "8.1.0" dependencies: "@npmcli/node-gyp" "^3.0.0" "@npmcli/package-json" "^5.0.0" "@npmcli/promise-spawn" "^7.0.0" - node-gyp "^10.0.0" - which "^4.0.0" + "node-gyp" "^10.0.0" + "proc-log" "^4.0.0" + "which" "^4.0.0" -"@nrwl/angular@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-19.0.5.tgz#ff6abf0cbd0a3dd37248c471ad0b9684b94664a2" - integrity sha512-LnuOTj4ecNvUgJqx4k0yyjZ2Y/+aLwpc9w6wcscAmsOF2IKstTrJGzyfs2gIYZgUt/IWI6NerBMLE5zR2pql0A== +"@nrwl/angular@19.5.6": + "integrity" "sha512-ilS6ZjsEOToeTiKHixd9+wLvslUZ1cdvNIgvsUZ3VHK4OmGxTzGJXaV+1+CSgYDpSp4+MC/Di8EfzUteCn9mFw==" + "resolved" "https://registry.npmjs.org/@nrwl/angular/-/angular-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/angular" "19.0.5" - tslib "^2.3.0" + "@nx/angular" "19.5.6" + "tslib" "^2.3.0" -"@nrwl/cypress@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-19.0.5.tgz#0ea3944a7f433a9cab5709c25bf03318fb18569b" - integrity sha512-tP3FFKxnYm+UT4Zx+zPsXZrEsrhI23gNorlWwEE6yFzGZMGQHcOODb9Hvr1AJp7Sud5P91FsKfQQTY7l6X+o6g== +"@nrwl/cypress@19.5.6": + "integrity" "sha512-yVMSVjDcOdqiiJjHaHme/3FtyFgT4mK7+GZExoJzGevHDrReeN22a2+3W7Rr/cEi/qTDdnNfODn5QdSpWfbuLQ==" + "resolved" "https://registry.npmjs.org/@nrwl/cypress/-/cypress-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/cypress" "19.0.5" + "@nx/cypress" "19.5.6" -"@nrwl/devkit@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-19.0.5.tgz#541fcefb71b17951007764d8d5c8f05ba71d4e36" - integrity sha512-An/QPhcGP5l0R4zxeQodFo3rgofx3KhU37VMnKTv1TY8MaByOxh3fusdTAY8EWhdcdsu296wfqxe25snsZqlsQ== +"@nrwl/devkit@19.5.6": + "integrity" "sha512-H7LGlwAktfL2GR4scwCfehuppmzcHJJt4C2PpiGEsfA74MKBw2/VGX15b29Mf36XbGS+Bx9vjvooZEt5HPCusw==" + "resolved" "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/devkit" "19.0.5" + "@nx/devkit" "19.5.6" -"@nrwl/eslint-plugin-nx@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.0.5.tgz#5101991cf44e7787c418a39976701952210cd85d" - integrity sha512-X6XBovNC5ewA7U6k9bfoYGN91Bv/q5F7DfXbW8JlnieFh7VSOnmQg1IR7PuKJKjdT3rjUAY1tYA1tiJxXaoeNw== +"@nrwl/eslint-plugin-nx@19.5.6": + "integrity" "sha512-pHIJHXOVJRC+wBI9zK0RnwKAh7NC9TKCdIm5KsYNFHTLswUxHnxzmP86hKTVcZO7o10NeYzBWD7QAQvqYgIQoA==" + "resolved" "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/eslint-plugin" "19.0.5" + "@nx/eslint-plugin" "19.5.6" -"@nrwl/jest@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-19.0.5.tgz#bb829174eef30b91d673ad8ba062a913beb8c6c2" - integrity sha512-0JEXjBOltc7R2rZ2WRvipcPqRH25CspsNu7r7H0UE/UykOB+iDrnhUsLDexWrWbTJ4qTKl1S//4M5SV7ftvAIQ== +"@nrwl/jest@19.5.6": + "integrity" "sha512-/redyU+er4f0xjLgWttdyOZw0yOozGzwDuUWYu0vR9SCmKXyhQf3kUHw6yR3/qOLiN32VbzAmiq67NvGhoRgFw==" + "resolved" "https://registry.npmjs.org/@nrwl/jest/-/jest-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/jest" "19.0.5" + "@nx/jest" "19.5.6" -"@nrwl/js@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-19.0.5.tgz#1c7face01a4f5229f08db836914141c1598a2f7d" - integrity sha512-6alp+QH4ZKiwXvVvRxZpXhSu/7o2PnHN2UkROQT/ODrdeJl2aTHIm7yMRrGo9x76AmJSckoYbSBRoAG9SY46Zg== +"@nrwl/js@19.5.6": + "integrity" "sha512-mfTBvon1v/Ts1Crvv25raXGxpQe3cgPTNCP+D5SG6Vpe/vbLOYiBi90UhHIKXKZOQ73RRx+Wojgn+Zv5pDo13A==" + "resolved" "https://registry.npmjs.org/@nrwl/js/-/js-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/js" "19.0.5" + "@nx/js" "19.5.6" -"@nrwl/nest@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/nest/-/nest-19.0.5.tgz#a4371100f81081910b4177437dadf19f329f7605" - integrity sha512-XXMdvfYeUL7ibRRp9X0nnVjbzGZRd7paHF0XOeLaYf2AFUk8jzZeNls83t1HYidCe6DNaZoy2/P2iOvc2ulQnA== +"@nrwl/nest@19.5.6": + "integrity" "sha512-TPI2eD0JotnAvd3ynnrNiToVRTabjjqabU+JDnH2qrI2GnDwotbazJLxDQTlI62ev2sqs9lw3iMbn1jwJDy5UQ==" + "resolved" "https://registry.npmjs.org/@nrwl/nest/-/nest-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/nest" "19.0.5" + "@nx/nest" "19.5.6" -"@nrwl/node@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-19.0.5.tgz#e6f9203ed3e70652c1bc85f6ee0f446b0a4a1dd8" - integrity sha512-tnEfwM6sjQdguO60igkKkoN/nGZ+hEyPC5JHjNkhHgH4FA44AUEUh0A8+JTgZ2/mKpfpGXfDwxXEqGERyZzH8g== +"@nrwl/node@19.5.6": + "integrity" "sha512-eiQqeHNtR40cdD0WX33ZUwom3Malt7C7zq+iU5DTLlbeC6ciZGz9pYkeNZ6JJZOEPEUGM5O+7gtWUb+Ig7ZyMQ==" + "resolved" "https://registry.npmjs.org/@nrwl/node/-/node-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/node" "19.0.5" + "@nx/node" "19.5.6" -"@nrwl/storybook@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/storybook/-/storybook-19.0.5.tgz#0142e5af693bd28f7daeb919a90e456f526e83e3" - integrity sha512-oQYaDmuM+6f80hcyLPCIbpqGFdDXUfW08A9DnvtH5Zxx+zvxA/673odqfni44L1/lGgn3uFTFLnbbrIyST1+BQ== +"@nrwl/storybook@19.5.6": + "integrity" "sha512-xEAnwp16NKBXZ8nqXFiFjJFFc8SzWY+oRoXQTkR7mUV7kKnaeFK2mBq2JXygyRonRdrBjZIvsM7YzRRl3brlJQ==" + "resolved" "https://registry.npmjs.org/@nrwl/storybook/-/storybook-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/storybook" "19.0.5" + "@nx/storybook" "19.5.6" -"@nrwl/tao@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-19.0.5.tgz#275e0c61bb6ffa66117b1a4ace4fef45a684b015" - integrity sha512-2h/su5aFeAZrCEGlGDvxmZAUuu4RdFbfZ+HB0G4figFwqKMckX0yFhJXruIbOQdwCWyP542JOxlK+rubodLeXw== +"@nrwl/tao@19.5.6": + "integrity" "sha512-p1bxEjW32bIHAiTp+PVdJpa2V9En2s9FigepHXyvmT2Aipisz96CKiDjexhPTjOZHUKtqA9FgmOIuVl3sBME3g==" + "resolved" "https://registry.npmjs.org/@nrwl/tao/-/tao-19.5.6.tgz" + "version" "19.5.6" dependencies: - nx "19.0.5" - tslib "^2.3.0" + "nx" "19.5.6" + "tslib" "^2.3.0" -"@nrwl/web@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-19.0.5.tgz#d0314e73fb1a74ca0ae8fd3657aa88fe1f5e2975" - integrity sha512-Ruc8gabTHQRZNfaP17YI5waO9AJQdzfPUEITMVRKp5ktkGqRySGJsnVCJExCQLCt+++0vXkkn9Gge3CU5O2sZg== +"@nrwl/web@19.5.6": + "integrity" "sha512-2TJB0zSBjDtl2AaZToTvSLej4ed5YO5nJ9iFsv764WDLI0D/WsciUiZHNdXSIhU0lf2yrs7CmIYZFWAdnXzxKA==" + "resolved" "https://registry.npmjs.org/@nrwl/web/-/web-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/web" "19.0.5" + "@nx/web" "19.5.6" -"@nrwl/webpack@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-19.0.5.tgz#3944c89dc485b5d2a8cb06d4b1eb2af98d8e1493" - integrity sha512-AJ9n/ulBrPNDKlLHoEF60Yk/bnVzGGN4MVYImgRbFRuo7/hueuQA6SeW4wm9HtGfMfTScNQJHbKqU43ZI0/vHg== +"@nrwl/webpack@19.5.6": + "integrity" "sha512-2tHi4QKDAjs9f7lzoELmzh5D1aT+XOn6PTK47V4n+Y878HgRQuv9NMRd7WhH5nAAlOKQYonsTc9e4doEJ6T9aQ==" + "resolved" "https://registry.npmjs.org/@nrwl/webpack/-/webpack-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/webpack" "19.0.5" + "@nx/webpack" "19.5.6" -"@nrwl/workspace@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-19.0.5.tgz#dc9b7e361697e44d541151e0cf1afa8d93b3f4da" - integrity sha512-8QHV4ixmO3KEUwXJX2evO++QPKbVX6BikdF8WqViHtw725Z40u2MH8i+fsySR2/p3nsSg+Z4404pt6/s40pG9Q== +"@nrwl/workspace@19.5.6": + "integrity" "sha512-k0Pria840szB3dIDCXOMbD4jbnaLCeGRYthE5duG5nPxTCbeMMu7pU1t0sv9IgpQZ/JrHeWliknWgaTlIguPug==" + "resolved" "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.5.6.tgz" + "version" "19.5.6" dependencies: - "@nx/workspace" "19.0.5" + "@nx/workspace" "19.5.6" "@nuxtjs/opencollective@0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz#620ce1044f7ac77185e825e1936115bb38e2681c" - integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== - dependencies: - chalk "^4.1.0" - consola "^2.15.0" - node-fetch "^2.6.1" - -"@nx/angular@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/angular/-/angular-19.0.5.tgz#a7b48b8e2fcacd228d432f1149c89974667bb071" - integrity sha512-znJXDih50CNIm7bejQVyK4gB+V9IwgnjUBCllkDsXkDrSAtNmtcvtin9xqImZ7wfXHFNPmy2GqLK+Sp6mqAmEg== - dependencies: - "@nrwl/angular" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/eslint" "19.0.5" - "@nx/js" "19.0.5" - "@nx/web" "19.0.5" - "@nx/webpack" "19.0.5" - "@nx/workspace" "19.0.5" + "integrity" "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==" + "resolved" "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "chalk" "^4.1.0" + "consola" "^2.15.0" + "node-fetch" "^2.6.1" + +"@nx/angular@19.5.6": + "integrity" "sha512-86fZmTx7Omo7FJuRyuNvEiUHUSuwEaGFeh/UkWt3Crf5C0pAlPYzpcm3B7B7e0RwGiWII9Mc9ZLwnPTv4jgZdA==" + "resolved" "https://registry.npmjs.org/@nx/angular/-/angular-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@module-federation/enhanced" "~0.2.3" + "@nrwl/angular" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/eslint" "19.5.6" + "@nx/js" "19.5.6" + "@nx/web" "19.5.6" + "@nx/webpack" "19.5.6" + "@nx/workspace" "19.5.6" "@phenomnomnominal/tsquery" "~5.0.1" - "@typescript-eslint/type-utils" "^7.3.0" - chalk "^4.1.0" - find-cache-dir "^3.3.2" - ignore "^5.0.4" - magic-string "~0.30.2" - minimatch "9.0.3" - piscina "^4.4.0" - semver "^7.5.3" - tslib "^2.3.0" - webpack "^5.80.0" - webpack-merge "^5.8.0" - -"@nx/cypress@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/cypress/-/cypress-19.0.5.tgz#fe0c6ff75bbe242b3a3d28435b188e259f7b0dc0" - integrity sha512-6vpGzeC2r4ELctEO+gqJ++4d3k3+bC42zURBZwCVRn47ors26U8N/FjkpfLGidOzn6rJNTETDNBJoxdJQ7xkIw== - dependencies: - "@nrwl/cypress" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/eslint" "19.0.5" - "@nx/js" "19.0.5" + "@typescript-eslint/type-utils" "^7.16.0" + "chalk" "^4.1.0" + "find-cache-dir" "^3.3.2" + "magic-string" "~0.30.2" + "minimatch" "9.0.3" + "piscina" "^4.4.0" + "semver" "^7.5.3" + "tslib" "^2.3.0" + "webpack" "^5.88.0" + "webpack-merge" "^5.8.0" + +"@nx/cypress@19.5.6": + "integrity" "sha512-3yUZ0AR5e9Ea7vk/6Zjje1QHyPXGycdnWOzOZuOJ6Wloeqj/EWWGoIEsSt+XAfzCiK/oWnlXpsbkrGJZYYgbdQ==" + "resolved" "https://registry.npmjs.org/@nx/cypress/-/cypress-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nrwl/cypress" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/eslint" "19.5.6" + "@nx/js" "19.5.6" "@phenomnomnominal/tsquery" "~5.0.1" - detect-port "^1.5.1" - tslib "^2.3.0" - -"@nx/devkit@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-19.0.5.tgz#5b2e2f7997a019029007e7e5d5f8f04b4911e786" - integrity sha512-M/L0ZPxCfU7/WAy8UZEC5x3vyjAq9lGz6JwQ/5NfwbZsVCaeNgKpdavNJLtJG/SvQ6Ysz0t4u/ngLPfKP4N0CA== - dependencies: - "@nrwl/devkit" "19.0.5" - ejs "^3.1.7" - enquirer "~2.3.6" - ignore "^5.0.4" - minimatch "9.0.3" - semver "^7.5.3" - tmp "~0.2.1" - tslib "^2.3.0" - yargs-parser "21.1.1" - -"@nx/eslint-plugin@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/eslint-plugin/-/eslint-plugin-19.0.5.tgz#6b8e2a215840f369483c7a1f629bbd0346fa20ee" - integrity sha512-v/Bx2kPpkDvLksPGjAMXDV6aYrFEKiv7bYGluAQdMd8I+rnTSG/ti6pM/ZqJ49Eg5Ub7KRtTg+moK0f4Wvd9Kw== - dependencies: - "@nrwl/eslint-plugin-nx" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/js" "19.0.5" - "@typescript-eslint/type-utils" "^7.3.0" - "@typescript-eslint/utils" "^7.3.0" - chalk "^4.1.0" - confusing-browser-globals "^1.0.9" - jsonc-eslint-parser "^2.1.0" - semver "^7.5.3" - tslib "^2.3.0" - -"@nx/eslint@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/eslint/-/eslint-19.0.5.tgz#9e82bda765e106a7bce516a0f91e7dc5420cd3a6" - integrity sha512-STYXTklwBukZl9WS4iYoNw6DPkpbqz3JWVTQuUKLFT/4eLRVjjduRaJEW9NaV2vjMeq056soJrhc3ppSDIbN6g== - dependencies: - "@nx/devkit" "19.0.5" - "@nx/js" "19.0.5" - "@nx/linter" "19.0.5" - eslint "^8.0.0" - tslib "^2.3.0" - typescript "~5.4.2" - -"@nx/jest@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-19.0.5.tgz#3ff20be5b3851accdbccb3038fcc0e9277b0edde" - integrity sha512-AUp2Cfj+ll9uDB3VOVqrXxf4Xb5HiuB4hvK46upa8RqAUiQ+aS7dYC6bVVjOEsDw/Yz9HOyC5RN0qmYrNy0cqA== + "detect-port" "^1.5.1" + "tslib" "^2.3.0" + +"@nx/devkit@19.5.6": + "integrity" "sha512-zSToXLkhbAOQmqVTgUNHdLO0uOZz/iGwqEK4tuAhU5hhqTcpN1TZUI9BlINvtFJBLvbNroGrnIh0gTq9CPzVHw==" + "resolved" "https://registry.npmjs.org/@nx/devkit/-/devkit-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nrwl/devkit" "19.5.6" + "ejs" "^3.1.7" + "enquirer" "~2.3.6" + "ignore" "^5.0.4" + "minimatch" "9.0.3" + "semver" "^7.5.3" + "tmp" "~0.2.1" + "tslib" "^2.3.0" + "yargs-parser" "21.1.1" + +"@nx/eslint-plugin@19.5.6": + "integrity" "sha512-5yZJbAoS35blBvY1riAxzemBGJJJW36FVm304ccPyJXvXA7Wa7yMbtwuVagJ9E7w4fodmCcWOAvrCDUTSakBug==" + "resolved" "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nrwl/eslint-plugin-nx" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/js" "19.5.6" + "@typescript-eslint/type-utils" "^7.16.0" + "@typescript-eslint/utils" "^7.16.0" + "chalk" "^4.1.0" + "confusing-browser-globals" "^1.0.9" + "jsonc-eslint-parser" "^2.1.0" + "semver" "^7.5.3" + "tslib" "^2.3.0" + +"@nx/eslint@19.5.6": + "integrity" "sha512-WLUo4f+ndMVWZ5QqqZiZNCmbLCqEqPBopvGWJg6uUJyrm5HiFsks+1nRp7BxFzj0SwmdmSRzQFvMgorw7lAgCQ==" + "resolved" "https://registry.npmjs.org/@nx/eslint/-/eslint-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nx/devkit" "19.5.6" + "@nx/js" "19.5.6" + "@nx/linter" "19.5.6" + "semver" "^7.5.3" + "tslib" "^2.3.0" + "typescript" "~5.4.2" + +"@nx/jest@19.5.6": + "integrity" "sha512-UkGEl7iAt3MEz+BB4Xp3u641LrMeOytTcbljjyYtR84YtJaYgc8CFmornnw8KVqfavQS+v/nrv8lMbbYQHkWpQ==" + "resolved" "https://registry.npmjs.org/@nx/jest/-/jest-19.5.6.tgz" + "version" "19.5.6" dependencies: "@jest/reporters" "^29.4.1" "@jest/test-result" "^29.4.1" - "@nrwl/jest" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/js" "19.0.5" + "@nrwl/jest" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/js" "19.5.6" "@phenomnomnominal/tsquery" "~5.0.1" - chalk "^4.1.0" - identity-obj-proxy "3.0.0" - jest-config "^29.4.1" - jest-resolve "^29.4.1" - jest-util "^29.4.1" - minimatch "9.0.3" - resolve.exports "1.1.0" - tslib "^2.3.0" - yargs-parser "21.1.1" - -"@nx/js@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/js/-/js-19.0.5.tgz#4b543287ccef5abff7b4d692f7288df21ab28887" - integrity sha512-lDu4P+satlNl6K7OoF+C5rMVMwknJ696nfTN72cBihxKnZYkGYMWFqIazPG9EYVAwCifGjU4OKX4X8G0hyE7vA== + "chalk" "^4.1.0" + "identity-obj-proxy" "3.0.0" + "jest-config" "^29.4.1" + "jest-resolve" "^29.4.1" + "jest-util" "^29.4.1" + "minimatch" "9.0.3" + "resolve.exports" "1.1.0" + "tslib" "^2.3.0" + "yargs-parser" "21.1.1" + +"@nx/js@19.5.6": + "integrity" "sha512-NNf6Zh4Z8k3dmkXkCUYrReH9ZpdAhvUQjwrWUHtmc5MnWTsQL12a01MwbMi4ReMzDLDjffDXjJFxYmbNYKaRzw==" + "resolved" "https://registry.npmjs.org/@nx/js/-/js-19.5.6.tgz" + "version" "19.5.6" dependencies: "@babel/core" "^7.23.2" "@babel/plugin-proposal-decorators" "^7.22.7" @@ -4358,763 +3524,363 @@ "@babel/preset-env" "^7.23.2" "@babel/preset-typescript" "^7.22.5" "@babel/runtime" "^7.22.6" - "@nrwl/js" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/workspace" "19.0.5" - babel-plugin-const-enum "^1.0.1" - babel-plugin-macros "^2.8.0" - babel-plugin-transform-typescript-metadata "^0.3.1" - chalk "^4.1.0" - columnify "^1.6.0" - detect-port "^1.5.1" - fast-glob "3.2.7" - fs-extra "^11.1.0" - ignore "^5.0.4" - js-tokens "^4.0.0" - minimatch "9.0.3" - npm-package-arg "11.0.1" - npm-run-path "^4.0.1" - ora "5.3.0" - semver "^7.5.3" - source-map-support "0.5.19" - ts-node "10.9.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - -"@nx/linter@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-19.0.5.tgz#d00c8572fad4318651f3e964e99305545f87088c" - integrity sha512-cHErD2BBCjLLWul33xFKUQJFMXwbMOZeqBGgfWptQthFiscZrNcJWbE9NyD5Nm0pkCCjsN9FIdAtAaYVQC8iKA== - dependencies: - "@nx/eslint" "19.0.5" - -"@nx/nest@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nest/-/nest-19.0.5.tgz#efe3167a83eb62deaa3e041292f149066a799f23" - integrity sha512-Hvmsvrv7mslFswIfJsuGcJSswkHg9Ne8B8RvdG6WWIVzh/v0c+X+j1VpFfLHf37z+r6gEXCb1k0rqZWPYx4/kQ== + "@nrwl/js" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/workspace" "19.5.6" + "babel-plugin-const-enum" "^1.0.1" + "babel-plugin-macros" "^2.8.0" + "babel-plugin-transform-typescript-metadata" "^0.3.1" + "chalk" "^4.1.0" + "columnify" "^1.6.0" + "detect-port" "^1.5.1" + "fast-glob" "3.2.7" + "fs-extra" "^11.1.0" + "ignore" "^5.0.4" + "js-tokens" "^4.0.0" + "minimatch" "9.0.3" + "npm-package-arg" "11.0.1" + "npm-run-path" "^4.0.1" + "ora" "5.3.0" + "semver" "^7.5.3" + "source-map-support" "0.5.19" + "ts-node" "10.9.1" + "tsconfig-paths" "^4.1.2" + "tslib" "^2.3.0" + +"@nx/linter@19.5.6": + "integrity" "sha512-OS0DZ1TDTvWaZe7ijLT6jkQZCCBg4OseFmP2Y6bqE/oRdyoRv95gCT2MGmyJQXkLoX5j9DMfc4nYXS0VHFYqdg==" + "resolved" "https://registry.npmjs.org/@nx/linter/-/linter-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nx/eslint" "19.5.6" + +"@nx/nest@19.5.6": + "integrity" "sha512-cIr27QlF3RBb0NhCxJGipQt2uwgERLMJ0nqJhlkbBFlmZsZiFEQ33V89hgGAdPTB3ntEKmubKws0ZySn2hdrCQ==" + "resolved" "https://registry.npmjs.org/@nx/nest/-/nest-19.5.6.tgz" + "version" "19.5.6" dependencies: "@nestjs/schematics" "^9.1.0" - "@nrwl/nest" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/eslint" "19.0.5" - "@nx/js" "19.0.5" - "@nx/node" "19.0.5" + "@nrwl/nest" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/eslint" "19.5.6" + "@nx/js" "19.5.6" + "@nx/node" "19.5.6" "@phenomnomnominal/tsquery" "~5.0.1" - tslib "^2.3.0" - -"@nx/node@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/node/-/node-19.0.5.tgz#36b67a62d26c83c651b0f4cf4693f90b3ce54ff7" - integrity sha512-uHOdNeb4EisAwGknlvlssna+9egh4GQS7yM85Oo3l+jWm8RtudswOu+Y0TeDk1DaCzZAfmMvtY59Y1bN5ppWPw== - dependencies: - "@nrwl/node" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/eslint" "19.0.5" - "@nx/jest" "19.0.5" - "@nx/js" "19.0.5" - tslib "^2.3.0" - -"@nx/nx-darwin-arm64@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.0.5.tgz#676743b2b9b679ba736775916ab875f5cfc29527" - integrity sha512-UVI/PArJXGi482wTR1wlGCnploTx0WyjPMMCUEcV7dGtITHcx+g2vgsn+ymcJMYvFXMlqz/Ht0y+nK2DceRNFg== - -"@nx/nx-darwin-x64@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-19.0.5.tgz#42943189c8913d3c10b23fd295020b8a811695ed" - integrity sha512-aotdZKCkviDT1bBcwVehr3lmsVUeqi1bNSsXf5ISpf/xul+bjpC0GHmvyT+uA7Qm60Z78t/C9UzlRolHX8R2qw== - -"@nx/nx-freebsd-x64@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.0.5.tgz#e80f2034a09e19e679306b09d53f3c3766bbd84e" - integrity sha512-hv/CU+/siZpb7jAUcTQPbNqnyUtczmMzL0RrpFbyzBtArxNJRekLqFUf2vuOhMBycp1Nd7eAIFZVG45nupUGOQ== - -"@nx/nx-linux-arm-gnueabihf@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.0.5.tgz#48e861df43e67f7abb378310e05cde6881f096ce" - integrity sha512-Epa4Ubg7TsPxaVXthffKDbfwHnxmEY7FAfHSB+vv09JJ+BR8XItNNl2Tqi/lsgFSHxBVDBU8bmdZZFRx9RAWYQ== - -"@nx/nx-linux-arm64-gnu@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.0.5.tgz#58a50eb6c45c45a454690bb6c430d60047269659" - integrity sha512-tE+zouY5ZnJubVXeREVngrniQqv3HRd4uJFhJKW53yQIMRXFHa1BK+HEg9DmexG7qLMN7TUx4ZKCe8ojiyY5QA== - -"@nx/nx-linux-arm64-musl@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.0.5.tgz#4f734f97ae17ace18c36e7cb1ee285411384023a" - integrity sha512-wZFSElrds1bBb+V+KbHiXCQxhs9yZ3cI2UVras6ATJkuLm+iU/5ifY3FssA2nZVUHZKfc7gENyD0/eFoGKk+4w== - -"@nx/nx-linux-x64-gnu@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.0.5.tgz#67db3209ee0bf6a3d6beaf06953e94012fd29341" - integrity sha512-zEPiZJ1yEdjcgsxi3VdzNgj0pRtxU3pxUPYmlPLaqsW9UcD8AiMZF6xZA1+KZK7VBoZmsrOdmchcmgSW0yK+Fg== - -"@nx/nx-linux-x64-musl@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.0.5.tgz#777fabd38850ebc8a55da9234c678805e1329359" - integrity sha512-WjPDLDHvpwJq7BH+p5X0VO+SrEBSGmMUhsEJ4A39dBH/Md3daW+s6ZPk+frCDiDEGdTEsMJVphEn9Uoq+21nRQ== - -"@nx/nx-win32-arm64-msvc@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.0.5.tgz#77f88a1cfb625a0cfd0cc9472065b3876cef5f99" - integrity sha512-GHZLUVFsdP/cOUU45TTMql6u2WpUaM0kdaL5k+qHCr50bi6AEKmf9TL/fXfGMpZRvWyqRF4C9+0Z4cqhLxGn1Q== - -"@nx/nx-win32-x64-msvc@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.0.5.tgz#90ec93c1bbb596559abcd0e74a3bec2ee7ddd7f2" - integrity sha512-pppr1ermz+oAxS5YOuMU6FoqFPWXRqij3+kTkgrNnTqAJ33dkVk1x/tZnjisrFJWfKB+erBOQCe4XwwkuBuG3Q== - -"@nx/storybook@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/storybook/-/storybook-19.0.5.tgz#281e81705a322c4500eec0ebbcff698643c12238" - integrity sha512-pvUqQezVcvASKhcSakfWOxWly2zWgWoS/ec5PM7CLeAiKJfizxKClU58aGitK405hMRjJWGKTjb/Jfv7zECJRw== - dependencies: - "@nrwl/storybook" "19.0.5" - "@nx/cypress" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/eslint" "19.0.5" - "@nx/js" "19.0.5" + "tslib" "^2.3.0" + +"@nx/node@19.5.6": + "integrity" "sha512-nWWoZCdomYOo0JmJMiP1UWlAnCdrvqLxXgWS6MNbQTT0rhJSn6em5S9N4TuHA7+aCDInvzNEL8YcVTm1xCbtug==" + "resolved" "https://registry.npmjs.org/@nx/node/-/node-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nrwl/node" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/eslint" "19.5.6" + "@nx/jest" "19.5.6" + "@nx/js" "19.5.6" + "tslib" "^2.3.0" + +"@nx/nx-win32-x64-msvc@19.5.6": + "integrity" "sha512-zWB/2TjhNYKHbuPh++5hYitno3EpSFXrPND0I0VLec27WW7voRY9XQFFznA3omForU4FfmVhITcKCqzIb3EtpA==" + "resolved" "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.5.6.tgz" + "version" "19.5.6" + +"@nx/storybook@19.5.6": + "integrity" "sha512-9lfGxk/Wl6yVXWJZrOgcgYP1QmdxH6GG+VmOB+ofvQWapfH962jadmNlgxDzQW9uYoNI50WHibVq1eCfll68Uw==" + "resolved" "https://registry.npmjs.org/@nx/storybook/-/storybook-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nrwl/storybook" "19.5.6" + "@nx/cypress" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/eslint" "19.5.6" + "@nx/js" "19.5.6" "@phenomnomnominal/tsquery" "~5.0.1" - semver "^7.5.3" - tslib "^2.3.0" - -"@nx/web@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/web/-/web-19.0.5.tgz#26af8e079d42cf6195131fe3822fa7ca92cd68df" - integrity sha512-AXKPm79h8DBO59I5R7HISREKh2nDqz7QMdd7yIdvKnSePUH4qMFOFXDwC1rSMfdZWSNLwnX17BFU5kbameD9sg== - dependencies: - "@nrwl/web" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/js" "19.0.5" - chalk "^4.1.0" - detect-port "^1.5.1" - http-server "^14.1.0" - tslib "^2.3.0" - -"@nx/webpack@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/webpack/-/webpack-19.0.5.tgz#c2a0d17e1fee99f7fb94a00ab86ea79b79e784cb" - integrity sha512-t+UlSyg/m5/TyUvEndjvZWA8vx4ULoM1jxqqZKkoX6xk6zBYcoV1/nFpjluTI3BQ3jjwBPEErba2e0HFX5Kr3Q== + "semver" "^7.5.3" + "tslib" "^2.3.0" + +"@nx/web@19.5.6": + "integrity" "sha512-mCw2KpVj8FPieRFn98bMJxF4s1RCMTciC78NKFiC0Dmg0KFmhFUw6geWe8anhhjbTxqFvLENMJQIn9K4dlaL1A==" + "resolved" "https://registry.npmjs.org/@nx/web/-/web-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nrwl/web" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/js" "19.5.6" + "chalk" "^4.1.0" + "detect-port" "^1.5.1" + "http-server" "^14.1.0" + "tslib" "^2.3.0" + +"@nx/webpack@19.5.6": + "integrity" "sha512-7xMYx0MIxf4kuhiIyF7QEee7AgK1wzroO2wl+9fU8sjKhvDgW9k8huMCNkOcScptB3SP4CiM9b7S5c/pwr75hQ==" + "resolved" "https://registry.npmjs.org/@nx/webpack/-/webpack-19.5.6.tgz" + "version" "19.5.6" dependencies: "@babel/core" "^7.23.2" - "@nrwl/webpack" "19.0.5" - "@nx/devkit" "19.0.5" - "@nx/js" "19.0.5" - ajv "^8.12.0" - autoprefixer "^10.4.9" - babel-loader "^9.1.2" - browserslist "^4.21.4" - chalk "^4.1.0" - copy-webpack-plugin "^10.2.4" - css-loader "^6.4.0" - css-minimizer-webpack-plugin "^5.0.0" - fork-ts-checker-webpack-plugin "7.2.13" - less "4.1.3" - less-loader "11.1.0" - license-webpack-plugin "^4.0.2" - loader-utils "^2.0.3" - mini-css-extract-plugin "~2.4.7" - parse5 "4.0.0" - postcss "^8.4.14" - postcss-import "~14.1.0" - postcss-loader "^6.1.1" - rxjs "^7.8.0" - sass "^1.42.1" - sass-loader "^12.2.0" - source-map-loader "^3.0.0" - style-loader "^3.3.0" - stylus "^0.59.0" - stylus-loader "^7.1.0" - terser-webpack-plugin "^5.3.3" - ts-loader "^9.3.1" - tsconfig-paths-webpack-plugin "4.0.0" - tslib "^2.3.0" - webpack "^5.80.0" - webpack-dev-server "^4.9.3" - webpack-node-externals "^3.0.0" - webpack-subresource-integrity "^5.1.0" - -"@nx/workspace@19.0.5": - version "19.0.5" - resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-19.0.5.tgz#855ff4e02253ff5bd0370eda5c7c5f3219d5164a" - integrity sha512-U56H3k/TGlGH9xUFAACc+xunYg6duGCwnDtjPKH22AOEgGlJVDHvOD/4e7CSmh/Xzl2KpXt8aYJStjPWm6ykzg== - dependencies: - "@nrwl/workspace" "19.0.5" - "@nx/devkit" "19.0.5" - chalk "^4.1.0" - enquirer "~2.3.6" - nx "19.0.5" - tslib "^2.3.0" - yargs-parser "21.1.1" + "@module-federation/enhanced" "^0.2.3" + "@module-federation/sdk" "^0.2.3" + "@nrwl/webpack" "19.5.6" + "@nx/devkit" "19.5.6" + "@nx/js" "19.5.6" + "@phenomnomnominal/tsquery" "~5.0.1" + "ajv" "^8.12.0" + "autoprefixer" "^10.4.9" + "babel-loader" "^9.1.2" + "browserslist" "^4.21.4" + "chalk" "^4.1.0" + "copy-webpack-plugin" "^10.2.4" + "css-loader" "^6.4.0" + "css-minimizer-webpack-plugin" "^5.0.0" + "express" "^4.19.2" + "fork-ts-checker-webpack-plugin" "7.2.13" + "http-proxy-middleware" "^3.0.0" + "less" "4.1.3" + "less-loader" "11.1.0" + "license-webpack-plugin" "^4.0.2" + "loader-utils" "^2.0.3" + "mini-css-extract-plugin" "~2.4.7" + "parse5" "4.0.0" + "postcss" "^8.4.38" + "postcss-import" "~14.1.0" + "postcss-loader" "^6.1.1" + "rxjs" "^7.8.0" + "sass" "^1.42.1" + "sass-loader" "^12.2.0" + "source-map-loader" "^5.0.0" + "style-loader" "^3.3.0" + "stylus" "^0.59.0" + "stylus-loader" "^7.1.0" + "terser-webpack-plugin" "^5.3.3" + "ts-loader" "^9.3.1" + "tsconfig-paths-webpack-plugin" "4.0.0" + "tslib" "^2.3.0" + "webpack" "^5.80.0" + "webpack-dev-server" "^4.9.3" + "webpack-node-externals" "^3.0.0" + "webpack-subresource-integrity" "^5.1.0" + +"@nx/workspace@19.5.6": + "integrity" "sha512-VkyHzSPI+++kLgftE6HA/jXcbn3zZwDYjhsrmSqwutj8BTuKhxs1YIL2gkzYVoTytF1wpWl3nk5MzqMGclptjA==" + "resolved" "https://registry.npmjs.org/@nx/workspace/-/workspace-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@nrwl/workspace" "19.5.6" + "@nx/devkit" "19.5.6" + "chalk" "^4.1.0" + "enquirer" "~2.3.6" + "nx" "19.5.6" + "tslib" "^2.3.0" + "yargs-parser" "21.1.1" "@peculiar/asn1-android@^2.3.10": - version "2.3.10" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz#a2dde6227fa1ddea33d8ae7835768674e7a0baa6" - integrity sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw== + "integrity" "sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==" + "resolved" "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz" + "version" "2.3.10" dependencies: "@peculiar/asn1-schema" "^2.3.8" - asn1js "^3.0.5" - tslib "^2.6.2" + "asn1js" "^3.0.5" + "tslib" "^2.6.2" "@peculiar/asn1-ecc@^2.3.8": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz#6b1a18f64f221ae862c1038bb125fbf4342918a0" - integrity sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ== + "integrity" "sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ==" + "resolved" "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz" + "version" "2.3.8" dependencies: "@peculiar/asn1-schema" "^2.3.8" "@peculiar/asn1-x509" "^2.3.8" - asn1js "^3.0.5" - tslib "^2.6.2" + "asn1js" "^3.0.5" + "tslib" "^2.6.2" "@peculiar/asn1-rsa@^2.3.8": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz#6a6a0eaafc0aded9a44b679b522cc2417b09a3ba" - integrity sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q== + "integrity" "sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q==" + "resolved" "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz" + "version" "2.3.8" dependencies: "@peculiar/asn1-schema" "^2.3.8" "@peculiar/asn1-x509" "^2.3.8" - asn1js "^3.0.5" - tslib "^2.6.2" + "asn1js" "^3.0.5" + "tslib" "^2.6.2" "@peculiar/asn1-schema@^2.3.8": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" - integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== + "integrity" "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==" + "resolved" "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz" + "version" "2.3.8" dependencies: - asn1js "^3.0.5" - pvtsutils "^1.3.5" - tslib "^2.6.2" + "asn1js" "^3.0.5" + "pvtsutils" "^1.3.5" + "tslib" "^2.6.2" "@peculiar/asn1-x509@^2.3.8": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz#865896e2b849cc3c55497ca685040ef889d357a3" - integrity sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw== + "integrity" "sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw==" + "resolved" "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz" + "version" "2.3.8" + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "asn1js" "^3.0.5" + "ipaddr.js" "^2.1.0" + "pvtsutils" "^1.3.5" + "tslib" "^2.6.2" + +"@peculiar/json-schema@^1.1.12": + "integrity" "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==" + "resolved" "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz" + "version" "1.1.12" + dependencies: + "tslib" "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + "integrity" "sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==" + "resolved" "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz" + "version" "1.5.0" dependencies: "@peculiar/asn1-schema" "^2.3.8" - asn1js "^3.0.5" - ipaddr.js "^2.1.0" - pvtsutils "^1.3.5" - tslib "^2.6.2" + "@peculiar/json-schema" "^1.1.12" + "pvtsutils" "^1.3.5" + "tslib" "^2.6.2" + "webcrypto-core" "^1.8.0" "@phenomnomnominal/tsquery@~5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz#a2a5abc89f92c01562a32806655817516653a388" - integrity sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA== + "integrity" "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==" + "resolved" "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz" + "version" "5.0.1" dependencies: - esquery "^1.4.0" + "esquery" "^1.4.0" "@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "integrity" "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" + "resolved" "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + "version" "0.11.0" "@polka/url@^1.0.0-next.24": - version "1.0.0-next.25" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" - integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== - -"@prisma/client@5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.14.0.tgz#dadca5bb1137ddcebb454bbdaf89423823d3363f" - integrity sha512-akMSuyvLKeoU4LeyBAUdThP/uhVP3GuLygFE3MlYzaCb3/J8SfsYBE5PkaFuLuVpLyA6sFoW+16z/aPhNAESqg== - -"@prisma/debug@5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.14.0.tgz#1227c705893c38284f7c63d72441480ebaa12605" - integrity sha512-iq56qBZuFfX3fCxoxT8gBX33lQzomBU0qIUaEj1RebsKVz1ob/BVH1XSBwwwvRVtZEV1b7Fxx2eVu34Ge/mg3w== - -"@prisma/engines-version@5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48": - version "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48.tgz#019c3c75a5c3276e580685fe48cdbfd181176858" - integrity sha512-ip6pNkRo1UxWv+6toxNcYvItNYaqQjXdFNGJ+Nuk2eYtRoEdoF13wxo7/jsClJFFenMPVNVqXQDV0oveXnR1cA== - -"@prisma/engines@5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.14.0.tgz#2ee91dd2220a726c27c906fbea788bbb3efdac6e" - integrity sha512-lgxkKZ6IEygVcw6IZZUlPIfLQ9hjSYAtHjZ5r64sCLDgVzsPFCi2XBBJgzPMkOQ5RHzUD4E/dVdpn9+ez8tk1A== - dependencies: - "@prisma/debug" "5.14.0" - "@prisma/engines-version" "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48" - "@prisma/fetch-engine" "5.14.0" - "@prisma/get-platform" "5.14.0" - -"@prisma/fetch-engine@5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.14.0.tgz#45297c118d4ec3fea55129886edd5a429da1f6da" - integrity sha512-VrheA9y9DMURK5vu8OJoOgQpxOhas3qF0IBHJ8G/0X44k82kc8E0w98HCn2nhnbOOMwbWsJWXfLC2/F8n5u0gQ== - dependencies: - "@prisma/debug" "5.14.0" - "@prisma/engines-version" "5.14.0-25.e9771e62de70f79a5e1c604a2d7c8e2a0a874b48" - "@prisma/get-platform" "5.14.0" - -"@prisma/get-platform@5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.14.0.tgz#69112d3dde61905f59a65ed818f153e153ca40f0" - integrity sha512-/yAyBvcEjRv41ynZrhdrPtHgk47xLRRq/o5eWGcUpBJ1YrUZTYB8EoPiopnP7iQrMATK8stXQdPOoVlrzuTQZw== - dependencies: - "@prisma/debug" "5.14.0" - -"@radix-ui/number@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.1.tgz#644161a3557f46ed38a042acf4a770e826021674" - integrity sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/primitive@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.1.tgz#e46f9958b35d10e9f6dc71c497305c22e3e55dbd" - integrity sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-arrow@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz#c24f7968996ed934d57fe6cde5d6ec7266e1d25d" - integrity sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-collection@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.3.tgz#9595a66e09026187524a36c6e7e9c7d286469159" - integrity sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-slot" "1.0.2" - -"@radix-ui/react-compose-refs@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz#7ed868b66946aa6030e580b1ffca386dd4d21989" - integrity sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-context@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.1.tgz#fe46e67c96b240de59187dcb7a1a50ce3e2ec00c" - integrity sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-direction@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.1.tgz#9cb61bf2ccf568f3421422d182637b7f47596c9b" - integrity sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-dismissable-layer@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz#883a48f5f938fa679427aa17fcba70c5494c6978" - integrity sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-escape-keydown" "1.0.3" - -"@radix-ui/react-focus-guards@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad" - integrity sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-focus-scope@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz#9c2e8d4ed1189a1d419ee61edd5c1828726472f9" - integrity sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-id@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0" - integrity sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-popper@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.2.tgz#4c0b96fcd188dc1f334e02dba2d538973ad842e9" - integrity sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg== - dependencies: - "@babel/runtime" "^7.13.10" - "@floating-ui/react-dom" "^2.0.0" - "@radix-ui/react-arrow" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - "@radix-ui/react-use-rect" "1.0.1" - "@radix-ui/react-use-size" "1.0.1" - "@radix-ui/rect" "1.0.1" - -"@radix-ui/react-portal@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.3.tgz#ffb961244c8ed1b46f039e6c215a6c4d9989bda1" - integrity sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-primitive@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0" - integrity sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-slot" "1.0.2" - -"@radix-ui/react-roving-focus@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz#e90c4a6a5f6ac09d3b8c1f5b5e81aab2f0db1974" - integrity sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-select@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-1.2.2.tgz#caa981fa0d672cf3c1b2a5240135524e69b32181" - integrity sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/number" "1.0.1" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-dismissable-layer" "1.0.4" - "@radix-ui/react-focus-guards" "1.0.1" - "@radix-ui/react-focus-scope" "1.0.3" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-popper" "1.1.2" - "@radix-ui/react-portal" "1.0.3" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-slot" "1.0.2" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-controllable-state" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - "@radix-ui/react-use-previous" "1.0.1" - "@radix-ui/react-visually-hidden" "1.0.3" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.5" - -"@radix-ui/react-separator@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.0.3.tgz#be5a931a543d5726336b112f465f58585c04c8aa" - integrity sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-slot@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" - integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - -"@radix-ui/react-toggle-group@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz#f5b5c8c477831b013bec3580c55e20a68179d6ec" - integrity sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-toggle" "1.0.3" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-toggle@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz#aecb2945630d1dc5c512997556c57aba894e539e" - integrity sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-toolbar@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz#3211a105567fa016e89921b5b514877f833de559" - integrity sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-separator" "1.0.3" - "@radix-ui/react-toggle-group" "1.0.4" - -"@radix-ui/react-use-callback-ref@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz#f4bb1f27f2023c984e6534317ebc411fc181107a" - integrity sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-controllable-state@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz#ecd2ced34e6330caf89a82854aa2f77e07440286" - integrity sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-use-escape-keydown@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz#217b840c250541609c66f67ed7bab2b733620755" - integrity sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-use-layout-effect@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399" - integrity sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-previous@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz#b595c087b07317a4f143696c6a01de43b0d0ec66" - integrity sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-rect@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz#fde50b3bb9fd08f4a1cd204572e5943c244fcec2" - integrity sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/rect" "1.0.1" - -"@radix-ui/react-use-size@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz#1c5f5fea940a7d7ade77694bb98116fb49f870b2" - integrity sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-visually-hidden@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz#51aed9dd0fe5abcad7dee2a234ad36106a6984ac" - integrity sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/rect@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.0.1.tgz#bf8e7d947671996da2e30f4904ece343bc4a883f" - integrity sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@rollup/rollup-android-arm-eabi@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz#1a32112822660ee104c5dd3a7c595e26100d4c2d" - integrity sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ== - -"@rollup/rollup-android-arm64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz#5aeef206d65ff4db423f3a93f71af91b28662c5b" - integrity sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw== - -"@rollup/rollup-darwin-arm64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz#6b66aaf003c70454c292cd5f0236ebdc6ffbdf1a" - integrity sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw== - -"@rollup/rollup-darwin-x64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz#f64fc51ed12b19f883131ccbcea59fc68cbd6c0b" - integrity sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz#1a7641111be67c10111f7122d1e375d1226cbf14" - integrity sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A== - -"@rollup/rollup-linux-arm-musleabihf@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz#c93fd632923e0fee25aacd2ae414288d0b7455bb" - integrity sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg== - -"@rollup/rollup-linux-arm64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz#fa531425dd21d058a630947527b4612d9d0b4a4a" - integrity sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A== - -"@rollup/rollup-linux-arm64-musl@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz#8acc16f095ceea5854caf7b07e73f7d1802ac5af" - integrity sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA== - -"@rollup/rollup-linux-powerpc64le-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz#94e69a8499b5cf368911b83a44bb230782aeb571" - integrity sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ== - -"@rollup/rollup-linux-riscv64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz#7ef1c781c7e59e85a6ce261cc95d7f1e0b56db0f" - integrity sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg== - -"@rollup/rollup-linux-s390x-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz#f15775841c3232fca9b78cd25a7a0512c694b354" - integrity sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g== - -"@rollup/rollup-linux-x64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz#b521d271798d037ad70c9f85dd97d25f8a52e811" - integrity sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ== - -"@rollup/rollup-linux-x64-musl@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz#9254019cc4baac35800991315d133cc9fd1bf385" - integrity sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q== - -"@rollup/rollup-win32-arm64-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz#27f65a89f6f52ee9426ec11e3571038e4671790f" - integrity sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA== - -"@rollup/rollup-win32-ia32-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz#a2fbf8246ed0bb014f078ca34ae6b377a90cb411" - integrity sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ== - -"@rollup/rollup-win32-x64-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz#5a2d08b81e8064b34242d5cc9973ef8dd1e60503" - integrity sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w== + "integrity" "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==" + "resolved" "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz" + "version" "1.0.0-next.25" + +"@prisma/client@5.18.0": + "integrity" "sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw==" + "resolved" "https://registry.npmjs.org/@prisma/client/-/client-5.18.0.tgz" + "version" "5.18.0" + +"@prisma/debug@5.18.0": + "integrity" "sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==" + "resolved" "https://registry.npmjs.org/@prisma/debug/-/debug-5.18.0.tgz" + "version" "5.18.0" + +"@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169": + "integrity" "sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==" + "resolved" "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169.tgz" + "version" "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" + +"@prisma/engines@5.18.0": + "integrity" "sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==" + "resolved" "https://registry.npmjs.org/@prisma/engines/-/engines-5.18.0.tgz" + "version" "5.18.0" + dependencies: + "@prisma/debug" "5.18.0" + "@prisma/engines-version" "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" + "@prisma/fetch-engine" "5.18.0" + "@prisma/get-platform" "5.18.0" + +"@prisma/fetch-engine@5.18.0": + "integrity" "sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==" + "resolved" "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.18.0.tgz" + "version" "5.18.0" + dependencies: + "@prisma/debug" "5.18.0" + "@prisma/engines-version" "5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169" + "@prisma/get-platform" "5.18.0" + +"@prisma/get-platform@5.18.0": + "integrity" "sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==" + "resolved" "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.18.0.tgz" + "version" "5.18.0" + dependencies: + "@prisma/debug" "5.18.0" + +"@rollup/rollup-win32-x64-msvc@4.18.0": + "integrity" "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==" + "resolved" "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz" + "version" "4.18.0" + +"@rollup/rollup-win32-x64-msvc@4.21.1": + "integrity" "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==" + "resolved" "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz" + "version" "4.21.1" "@samverschueren/stream-to-observable@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" - integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== - dependencies: - any-observable "^0.3.0" - -"@schematics/angular@17.3.3": - version "17.3.3" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-17.3.3.tgz#d6fe530dd478fe2449d0d0990d083a14e2d6a18e" - integrity sha512-kNlyjIKTBhfi8Jab3MCkxNRbbpErbzdu0lZNSL8Nidmqs6Tk23Dc1bZe4t/gPNOCkCvQlwYa6X88SjC/ntyVng== + "integrity" "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==" + "resolved" "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz" + "version" "0.3.1" dependencies: - "@angular-devkit/core" "17.3.3" - "@angular-devkit/schematics" "17.3.3" - jsonc-parser "3.2.1" + "any-observable" "^0.3.0" -"@schematics/angular@17.3.8": - version "17.3.8" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-17.3.8.tgz#0b4adf9d05b22176b99ad8e311a274c102d74822" - integrity sha512-2g4OmSyE9YGq50Uj7fNI26P/TSAFJ7ZuirwTF2O7Xc4XRQ29/tYIIqhezpNlTb6rlYblcQuMcUZBrMfWJHcqJw== +"@schematics/angular@^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "@schematics/angular@>= 16.0.0 < 19.0.0", "@schematics/angular@18.1.1": + "integrity" "sha512-6nQUSuFSP7un5Bmm6/MpQXq3jnkdEYg2MUPv7JStsqnT1YYzUsDjkUv7Hsci0xQmeUAzVz3ueg4znviJoQxWdg==" + "resolved" "https://registry.npmjs.org/@schematics/angular/-/angular-18.1.1.tgz" + "version" "18.1.1" dependencies: - "@angular-devkit/core" "17.3.8" - "@angular-devkit/schematics" "17.3.8" - jsonc-parser "3.2.1" - -"@schematics/angular@^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0": - version "18.0.2" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-18.0.2.tgz#bc1f863b6f8b6d7a49fef8eccadda545f4fcf91d" - integrity sha512-qkJs1oxHtneJ6QxDKpxNyneXGDM9SKVj+Bgi8xUAU3FEzpsYmE/aW3MfwYHOZl0pDBO8c2raqLvlyl3dGP6/Gg== - dependencies: - "@angular-devkit/core" "18.0.2" - "@angular-devkit/schematics" "18.0.2" - jsonc-parser "3.2.1" + "@angular-devkit/core" "18.1.1" + "@angular-devkit/schematics" "18.1.1" + "jsonc-parser" "3.3.1" "@sigstore/bundle@^2.3.0", "@sigstore/bundle@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.3.1.tgz#f6cdc67c8400e58ca27f0ef495b27a9327512073" - integrity sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g== + "integrity" "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==" + "resolved" "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz" + "version" "2.3.1" dependencies: "@sigstore/protobuf-specs" "^0.3.1" "@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" - integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== + "integrity" "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==" + "resolved" "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz" + "version" "1.1.0" "@sigstore/protobuf-specs@^0.3.0", "@sigstore/protobuf-specs@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz#7095819fa7c5743efde48a858c37b30fab190a09" - integrity sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ== + "integrity" "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==" + "resolved" "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz" + "version" "0.3.1" "@sigstore/sign@^2.3.0": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.3.1.tgz#4fc4e6faee5689b5e9d42e97f1207273b7dd7b7f" - integrity sha512-YZ71wKIOweC8ViUeZXboz0iPLqMkskxuoeN/D1CEpAyZvEepbX9oRMIoO6a/DxUqO1VEaqmcmmqzSiqtOsvSmw== + "integrity" "sha512-YZ71wKIOweC8ViUeZXboz0iPLqMkskxuoeN/D1CEpAyZvEepbX9oRMIoO6a/DxUqO1VEaqmcmmqzSiqtOsvSmw==" + "resolved" "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.1.tgz" + "version" "2.3.1" dependencies: "@sigstore/bundle" "^2.3.0" "@sigstore/core" "^1.0.0" "@sigstore/protobuf-specs" "^0.3.1" - make-fetch-happen "^13.0.1" - proc-log "^4.2.0" - promise-retry "^2.0.1" + "make-fetch-happen" "^13.0.1" + "proc-log" "^4.2.0" + "promise-retry" "^2.0.1" "@sigstore/tuf@^2.3.1": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.3.tgz#be416424d5133b61f1adcc75df72136bf1dfe1ff" - integrity sha512-agQhHNkIddXFslkudjV88vTXiAMEyUtso3at6ZHUNJ1agZb7Ze6VW/PddHipdWBu1t+8OWLW5X5yZOPiOnaWJQ== + "integrity" "sha512-agQhHNkIddXFslkudjV88vTXiAMEyUtso3at6ZHUNJ1agZb7Ze6VW/PddHipdWBu1t+8OWLW5X5yZOPiOnaWJQ==" + "resolved" "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.3.tgz" + "version" "2.3.3" dependencies: "@sigstore/protobuf-specs" "^0.3.0" - tuf-js "^2.2.1" + "tuf-js" "^2.2.1" "@sigstore/verify@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-1.2.0.tgz#48549186305d8a5e471a3a304cf4cb3e0c99dde7" - integrity sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q== + "integrity" "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==" + "resolved" "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz" + "version" "1.2.0" dependencies: "@sigstore/bundle" "^2.3.1" "@sigstore/core" "^1.1.0" "@sigstore/protobuf-specs" "^0.3.1" "@simplewebauthn/browser@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-9.0.1.tgz#46a12c2bcefcb199f7fcb6a7e883531cd6efde17" - integrity sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw== + "integrity" "sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw==" + "resolved" "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-9.0.1.tgz" + "version" "9.0.1" dependencies: "@simplewebauthn/types" "^9.0.1" "@simplewebauthn/server@9.0.3": - version "9.0.3" - resolved "https://registry.yarnpkg.com/@simplewebauthn/server/-/server-9.0.3.tgz#5f73c19ff2420be94cc71a49085879c111d7872d" - integrity sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA== + "integrity" "sha512-FMZieoBosrVLFxCnxPFD9Enhd1U7D8nidVDT4MsHc6l4fdVcjoeHjDueeXCloO1k5O/fZg1fsSXXPKbY2XTzDA==" + "resolved" "https://registry.npmjs.org/@simplewebauthn/server/-/server-9.0.3.tgz" + "version" "9.0.3" dependencies: "@hexagon/base64" "^1.1.27" "@levischuck/tiny-cbor" "^0.2.2" @@ -5124,1123 +3890,415 @@ "@peculiar/asn1-schema" "^2.3.8" "@peculiar/asn1-x509" "^2.3.8" "@simplewebauthn/types" "^9.0.1" - cross-fetch "^4.0.0" + "cross-fetch" "^4.0.0" -"@simplewebauthn/types@9.0.1", "@simplewebauthn/types@^9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/types/-/types-9.0.1.tgz#3a68d50e63d8821cf2067de3324c68d5e8120d0c" - integrity sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w== +"@simplewebauthn/types@^9.0.1", "@simplewebauthn/types@9.0.1": + "integrity" "sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==" + "resolved" "https://registry.npmjs.org/@simplewebauthn/types/-/types-9.0.1.tgz" + "version" "9.0.1" "@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + "integrity" "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + "version" "0.27.8" "@sindresorhus/is@^4.0.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + "integrity" "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz" + "version" "4.6.0" + +"@sindresorhus/merge-streams@^2.1.0": + "integrity" "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==" + "resolved" "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz" + "version" "2.3.0" "@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + "integrity" "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==" + "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + "version" "3.0.1" dependencies: - type-detect "4.0.8" + "type-detect" "4.0.8" "@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + "integrity" "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==" + "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + "version" "10.3.0" dependencies: "@sinonjs/commons" "^3.0.0" "@stencil/core@^4.0.3": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@stencil/core/-/core-4.18.0.tgz#944d75c735f692517803904f8d43003307e1a2cb" - integrity sha512-cN+nvjy0L8KyYq7N1bmswN/AcBustFlsAxfyPQ+fd3m98lPo53jNKIxKve1ZQ4ZmzSzYO7alDhZvjIesM0rl7w== - -"@storybook/addon-actions@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.5.3.tgz#e0d0d819488d1d19918b23469b3ea6610fee5f07" - integrity sha512-v3yL6Eq/jCiXfA24JjRdbEQUuorms6tmrywaKcd1tAy4Ftgof0KHB4tTcTyiajrI5bh6PVJoRBkE8IDqmNAHkA== - dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" - dequal "^2.0.2" - lodash "^4.17.21" - polished "^4.2.2" - prop-types "^15.7.2" - react-inspector "^6.0.0" - telejson "^7.2.0" - ts-dedent "^2.0.0" - uuid "^9.0.0" - -"@storybook/addon-backgrounds@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.5.3.tgz#a6aa9df791220cff6290e7f93e04c546063f5407" - integrity sha512-UCOVd4UNIL5FRiwi9nyiWFocn/7ewwS6bIWnq66AaHg/sv92YwsPmgQJn0DMBGDOvUAWpiHdVsZNOTX6nvw4gA== - dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" - memoizerific "^1.11.3" - ts-dedent "^2.0.0" - -"@storybook/addon-controls@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.5.3.tgz#03ce5a31603b360fe906cefb3fe4945ef7188e62" - integrity sha512-KEuU4X5Xr6cJI9xrzOUVGEmUf1iHPfK7cj0GACKv0GElsdIsQryv+OZ7gRnvmNax/e2hm2t9cJcFxB24/p6rVg== - dependencies: - "@storybook/blocks" "7.5.3" - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/manager-api" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" - lodash "^4.17.21" - ts-dedent "^2.0.0" - -"@storybook/addon-docs@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.5.3.tgz#36c28c9a54b28e3b4b1450e821d65e07be6da45b" - integrity sha512-JVQ6iCXKESij/SbE4Wq47dkSSgBRulvA8SUf8NWL5m9qpiHrg0lPSERHfoTLiB5uC/JwF0OKIlhxoWl+zCmtYg== - dependencies: - "@jest/transform" "^29.3.1" - "@mdx-js/react" "^2.1.5" - "@storybook/blocks" "7.5.3" - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/csf-plugin" "7.5.3" - "@storybook/csf-tools" "7.5.3" - "@storybook/global" "^5.0.0" - "@storybook/mdx2-csf" "^1.0.0" - "@storybook/node-logger" "7.5.3" - "@storybook/postinstall" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/react-dom-shim" "7.5.3" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" - fs-extra "^11.1.0" - remark-external-links "^8.0.0" - remark-slug "^6.0.0" - ts-dedent "^2.0.0" - -"@storybook/addon-essentials@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.5.3.tgz#e6e3ea266181b42e15b4c57fc303adc238c102a4" - integrity sha512-PYj6swEI4nEzIbOTyHJB8u3K8ABYKoaW8XB5emMwsnrzB/TN7auHVhze2bQ/+ax5wyPKZpArPjxbWlSHtSws+A== - dependencies: - "@storybook/addon-actions" "7.5.3" - "@storybook/addon-backgrounds" "7.5.3" - "@storybook/addon-controls" "7.5.3" - "@storybook/addon-docs" "7.5.3" - "@storybook/addon-highlight" "7.5.3" - "@storybook/addon-measure" "7.5.3" - "@storybook/addon-outline" "7.5.3" - "@storybook/addon-toolbars" "7.5.3" - "@storybook/addon-viewport" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/manager-api" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/preview-api" "7.5.3" - ts-dedent "^2.0.0" - -"@storybook/addon-highlight@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.5.3.tgz#ff1041aa1e9d76100ce6fb0b11e0d30078f858f7" - integrity sha512-jb+aNRhj+tFK7EqqTlNCjGkTrkWqWHGdD1ubgnj29v8XhRuCR9YboPS+306KYwBEkuF4kNCHZofLiEBPf6nCJg== - dependencies: - "@storybook/core-events" "7.5.3" - "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.5.3" + "integrity" "sha512-cN+nvjy0L8KyYq7N1bmswN/AcBustFlsAxfyPQ+fd3m98lPo53jNKIxKve1ZQ4ZmzSzYO7alDhZvjIesM0rl7w==" + "resolved" "https://registry.npmjs.org/@stencil/core/-/core-4.18.0.tgz" + "version" "4.18.0" -"@storybook/addon-measure@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.5.3.tgz#9cfc34d88807afba6bc36990aef26be8ca8f8567" - integrity sha512-fun9BqUTGXgcMpcbX9wUowGDkjCL8oKasZbjp/MvGM3vPTM6HQdwzHTLJGPBnmJ1xK92NhwFRs0BrQX6uF1yrg== +"@storybook/addon-actions@8.2.6": + "integrity" "sha512-iCsf3V28/jJ95w2zd8aSvR4denoA2UYV3fpNCTGOURqICyKOG3cyVxvqKp8Hhcwn7trNOsK+HlL6q5gpv56ViA==" + "resolved" "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.2.6.tgz" + "version" "8.2.6" dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/types" "7.5.3" - tiny-invariant "^1.3.1" - -"@storybook/addon-outline@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.5.3.tgz#8b42758349ab07b5d39bf7e1b9cb2f83e173824a" - integrity sha512-c9vCi1SCGrtWr8qaOu/1GNWlrlrpl2lg4F9r+xtYf/KopenI3jSMz0YeTfmepZGAl+6Yc2Ywhm60jgpQ6SKciA== - dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/types" "7.5.3" - ts-dedent "^2.0.0" - -"@storybook/addon-toolbars@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.5.3.tgz#754e818935f08f05d4e06aefafe40a1080c4d575" - integrity sha512-KdLr4sGMJzhtjNTNE2ocfu58yOHHUyZ/cI3BTp7a0gq9YbUpHmC3XTNr26/yOYYrdjkiMD26XusJUjXe+/V2xw== - dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/manager-api" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/theming" "7.5.3" - -"@storybook/addon-viewport@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.5.3.tgz#05fb97114d0186977e25a5a448dea5fba66042ce" - integrity sha512-gT2XX0NNBrzSs1nrxadl6LnvcwgN7z2R0LzTK8/hxvx4D0EnXrV3feXLzjewr8ZYjzfEeSpO+W+bQTVNm3fNsg== - dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/core-events" "7.5.3" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/theming" "7.5.3" - memoizerific "^1.11.3" - prop-types "^15.7.2" - -"@storybook/angular@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/angular/-/angular-7.5.3.tgz#870d2b95efbdbce5cbbb361d14a2994120c0e07d" - integrity sha512-wGyebTb7hhdrhEopouFIsBS8SM/5nlTwxilaYbs9Cg3elSmsJyI3uLCHEeGKYupnzokQzP3xElWjwT2VYyW0fQ== - dependencies: - "@storybook/builder-webpack5" "7.5.3" - "@storybook/cli" "7.5.3" - "@storybook/client-logger" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/core-server" "7.5.3" - "@storybook/core-webpack" "7.5.3" - "@storybook/docs-tools" "7.5.3" + "@types/uuid" "^9.0.1" + "dequal" "^2.0.2" + "polished" "^4.2.2" + "uuid" "^9.0.0" + +"@storybook/addon-backgrounds@8.2.6": + "integrity" "sha512-61NFowA6EmCw+Eyzp0U4fat9MlPDdnT7aoDyzqSImLwWLITY9IvmWuTeo7XKJZN3fe22z1r7cZseKdYrtaHcKw==" + "resolved" "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.2.6.tgz" + "version" "8.2.6" + dependencies: "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/telemetry" "7.5.3" - "@storybook/types" "7.5.3" - "@types/node" "^18.0.0" - "@types/react" "^16.14.34" - "@types/react-dom" "^16.9.14" - "@types/semver" "^7.3.4" - "@types/webpack-env" "^1.18.0" - find-up "^5.0.0" - read-pkg-up "^7.0.1" - semver "^7.3.7" - telejson "^7.2.0" - ts-dedent "^2.0.0" - tsconfig-paths-webpack-plugin "^4.0.1" - util-deprecate "^1.0.2" - webpack "5" - -"@storybook/blocks@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.5.3.tgz#be754f60a91e95b8c72cbeadf9c5c7e7ab78920f" - integrity sha512-Z8yF820v78clQWkwG5OA5qugbQn7rtutq9XCsd03NDB+IEfDaTFQAZG8gs62ZX2ZaXAJsqJSr/mL9oURzXto2A== - dependencies: - "@storybook/channels" "7.5.3" - "@storybook/client-logger" "7.5.3" - "@storybook/components" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/csf" "^0.1.0" - "@storybook/docs-tools" "7.5.3" + "memoizerific" "^1.11.3" + "ts-dedent" "^2.0.0" + +"@storybook/addon-controls@8.2.6": + "integrity" "sha512-EHUwHy+oZZv3pXzN7fuXWrS/meHFjqcELY3RBvOyEkGf21agl6co6R1tnf6d5N5QoYAGfIbDO7dkauSL2RfNAw==" + "resolved" "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.2.6.tgz" + "version" "8.2.6" + dependencies: + "dequal" "^2.0.2" + "lodash" "^4.17.21" + "ts-dedent" "^2.0.0" + +"@storybook/addon-docs@8.2.6": + "integrity" "sha512-qe7hxntaezqjKdU9QS+Q9NFL6i/uNdBxdvOnCKgPhBAY/zY6yhk5t3sOvonynPK5nkaNAowfSNPIzNxAXlJ1sA==" + "resolved" "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.2.6.tgz" + "version" "8.2.6" + dependencies: + "@babel/core" "^7.24.4" + "@mdx-js/react" "^3.0.0" + "@storybook/blocks" "8.2.6" + "@storybook/csf-plugin" "8.2.6" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" - "@types/lodash" "^4.14.167" - color-convert "^2.0.1" - dequal "^2.0.2" - lodash "^4.17.21" - markdown-to-jsx "^7.1.8" - memoizerific "^1.11.3" - polished "^4.2.2" - react-colorful "^5.1.2" - telejson "^7.2.0" - tocbot "^4.20.1" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/builder-manager@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.0.9.tgz#1d1991bc347c7f9c0a1c8521f93980d8d00e6386" - integrity sha512-7yGEQsJgUZzuOuatE987e/VlB75THoNvsZn1TxbLDsrt6NgyFF+bxypon4rzmNhtCnoW77yC/1hXQTZuOqeHLQ== - dependencies: - "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "7.0.9" - "@storybook/manager" "7.0.9" - "@storybook/node-logger" "7.0.9" - "@types/ejs" "^3.1.1" - "@types/find-cache-dir" "^3.2.1" - "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" - browser-assert "^1.2.1" - ejs "^3.1.8" - esbuild "^0.17.0" - esbuild-plugin-alias "^0.2.1" - express "^4.17.3" - find-cache-dir "^3.0.0" - fs-extra "^11.1.0" - process "^0.11.10" - util "^0.12.4" - -"@storybook/builder-manager@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.5.3.tgz#dc667fd6d450988bc33c246686822a87c1b95558" - integrity sha512-uf4Vyj8ofHaq94m065SMvFKak1XrrxgI83VZAxc2QjiPcbRwcVOZd+wcKFdZydqqA6FlBDdJrU+k9INA4Qkfcw== - dependencies: - "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "7.5.3" - "@storybook/manager" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@types/ejs" "^3.1.1" - "@types/find-cache-dir" "^3.2.1" - "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" - browser-assert "^1.2.1" - ejs "^3.1.8" - esbuild "^0.18.0" - esbuild-plugin-alias "^0.2.1" - express "^4.17.3" - find-cache-dir "^3.0.0" - fs-extra "^11.1.0" - process "^0.11.10" - util "^0.12.4" - -"@storybook/builder-webpack5@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-7.5.3.tgz#7f392cae845c9c3c7de6e04045c531f8f70048e1" - integrity sha512-a2kHXFT61AV1+OPNTqXCsYk7Wk4XSqjAOQkSxWc1HK+kyMT+lahO4U06slji6XAVuXc/KY+naNUoaOfpB1hKVw== - dependencies: - "@babel/core" "^7.22.0" - "@storybook/channels" "7.5.3" - "@storybook/client-logger" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/core-webpack" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/preview" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@swc/core" "^1.3.82" - "@types/node" "^18.0.0" - "@types/semver" "^7.3.4" - babel-loader "^9.0.0" - babel-plugin-named-exports-order "^0.0.2" - browser-assert "^1.2.1" - case-sensitive-paths-webpack-plugin "^2.4.0" - constants-browserify "^1.0.0" - css-loader "^6.7.1" - express "^4.17.3" - fork-ts-checker-webpack-plugin "^8.0.0" - fs-extra "^11.1.0" - html-webpack-plugin "^5.5.0" - path-browserify "^1.0.1" - process "^0.11.10" - semver "^7.3.7" - style-loader "^3.3.1" - swc-loader "^0.2.3" - terser-webpack-plugin "^5.3.1" - ts-dedent "^2.0.0" - url "^0.11.0" - util "^0.12.4" - util-deprecate "^1.0.2" - webpack "5" - webpack-dev-middleware "^6.1.1" - webpack-hot-middleware "^2.25.1" - webpack-virtual-modules "^0.5.0" - -"@storybook/channel-postmessage@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-7.0.9.tgz#cb810026b40603fbaefbcd263291a467cba48076" - integrity sha512-6zsUPlsD3GVhKNq4UZ5MePJPjiMcPs/K02mH5/uVTN2JSgLdWgbLhZ4VYit4HgwE+d98bd9zWbgNgSOXpTArag== - dependencies: - "@storybook/channels" "7.0.9" - "@storybook/client-logger" "7.0.9" - "@storybook/core-events" "7.0.9" + "@storybook/react-dom-shim" "8.2.6" + "@types/react" "^16.8.0 || ^17.0.0 || ^18.0.0" + "fs-extra" "^11.1.0" + "react" "^16.8.0 || ^17.0.0 || ^18.0.0" + "react-dom" "^16.8.0 || ^17.0.0 || ^18.0.0" + "rehype-external-links" "^3.0.0" + "rehype-slug" "^6.0.0" + "ts-dedent" "^2.0.0" + +"@storybook/addon-essentials@8.2.6": + "integrity" "sha512-diGjGZcZNov+RCAVQBTm8JKP2kUtMRuJIQFBeXdPWpu6hYBk6lw1FlAf2GywWGCvdny1pJT90hfoD33qUMNuDg==" + "resolved" "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.2.6.tgz" + "version" "8.2.6" + dependencies: + "@storybook/addon-actions" "8.2.6" + "@storybook/addon-backgrounds" "8.2.6" + "@storybook/addon-controls" "8.2.6" + "@storybook/addon-docs" "8.2.6" + "@storybook/addon-highlight" "8.2.6" + "@storybook/addon-measure" "8.2.6" + "@storybook/addon-outline" "8.2.6" + "@storybook/addon-toolbars" "8.2.6" + "@storybook/addon-viewport" "8.2.6" + "ts-dedent" "^2.0.0" + +"@storybook/addon-highlight@8.2.6": + "integrity" "sha512-03cV9USsfP3bS4wYV06DYcIaGPfoheQe53Q0Jr1B2yJUVyIPKvmO2nGjLBsqzeL3Wl7vSfLQn0/dUdxCcbqLsw==" + "resolved" "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.2.6.tgz" + "version" "8.2.6" + dependencies: "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.0.3" -"@storybook/channels@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.9.tgz#0308c6a714daf1088228b554fd56dc72f2921b76" - integrity sha512-LF/Mkr0/+VOawEAospLGUcfZIPak3yV/ZjEAe/lubvLPJ6s2FFOjDUsyDIa2oM4ZE9TI6AGVN51kddVToelM8A== - -"@storybook/channels@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.5.3.tgz#cbd178b0778f3484b970d0fd0edd294db6969e0f" - integrity sha512-dhWuV2o2lmxH0RKuzND8jxYzvSQTSmpE13P0IT/k8+I1up/rSNYOBQJT6SalakcNWXFAMXguo/8E7ApmnKKcEw== +"@storybook/addon-measure@8.2.6": + "integrity" "sha512-neI8YeSOAtOmzasLxo6O8ZLr2ebMaD7XVF+kYatl5+SpyuwwvUGcP9NkKe5S+mB8V2zxFUIsXS74XrhmQhRoaQ==" + "resolved" "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.2.6.tgz" + "version" "8.2.6" dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/core-events" "7.5.3" "@storybook/global" "^5.0.0" - qs "^6.10.0" - telejson "^7.2.0" - tiny-invariant "^1.3.1" - -"@storybook/cli@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.0.9.tgz#c0499b58aa567e9d84a8f0c7d023ae6e506d44e2" - integrity sha512-x1UkqSx0kVCvt6V+QV94CivnvWWBPmi4503nB7dtGH6VBh469oWZrFA2gYzH0yl+W3IAPRmgEMTVszLxguBo/g== - dependencies: - "@babel/core" "^7.20.2" - "@babel/preset-env" "^7.20.2" - "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "7.0.9" - "@storybook/core-common" "7.0.9" - "@storybook/core-server" "7.0.9" - "@storybook/csf-tools" "7.0.9" - "@storybook/node-logger" "7.0.9" - "@storybook/telemetry" "7.0.9" - "@storybook/types" "7.0.9" - "@types/semver" "^7.3.4" - boxen "^5.1.2" - chalk "^4.1.0" - commander "^6.2.1" - cross-spawn "^7.0.3" - detect-indent "^6.1.0" - envinfo "^7.7.3" - execa "^5.0.0" - express "^4.17.3" - find-up "^5.0.0" - fs-extra "^11.1.0" - get-npm-tarball-url "^2.0.3" - get-port "^5.1.1" - giget "^1.0.0" - globby "^11.0.2" - jscodeshift "^0.14.0" - leven "^3.1.0" - prettier "^2.8.0" - prompts "^2.4.0" - puppeteer-core "^2.1.1" - read-pkg-up "^7.0.1" - semver "^7.3.7" - shelljs "^0.8.5" - simple-update-notifier "^1.0.0" - strip-json-comments "^3.0.1" - tempy "^1.0.1" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/cli@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.5.3.tgz#127ae3bcad169bf8c3eb3e1e6c9d587ad5f57e81" - integrity sha512-XysHSnknZTAcTbQ0bQsbfv5J8ifHpOBsmXjk1HCA05E9WGGrn9JrQRCfpDUQJ6O6UWq0bpMqzP8gFLWXFE7hug== - dependencies: - "@babel/core" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/types" "^7.22.5" - "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/core-server" "7.5.3" - "@storybook/csf-tools" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/telemetry" "7.5.3" - "@storybook/types" "7.5.3" - "@types/semver" "^7.3.4" - "@yarnpkg/fslib" "2.10.3" - "@yarnpkg/libzip" "2.3.0" - chalk "^4.1.0" - commander "^6.2.1" - cross-spawn "^7.0.3" - detect-indent "^6.1.0" - envinfo "^7.7.3" - execa "^5.0.0" - express "^4.17.3" - find-up "^5.0.0" - fs-extra "^11.1.0" - get-npm-tarball-url "^2.0.3" - get-port "^5.1.1" - giget "^1.0.0" - globby "^11.0.2" - jscodeshift "^0.14.0" - leven "^3.1.0" - ora "^5.4.1" - prettier "^2.8.0" - prompts "^2.4.0" - puppeteer-core "^2.1.1" - read-pkg-up "^7.0.1" - semver "^7.3.7" - simple-update-notifier "^2.0.0" - strip-json-comments "^3.0.1" - tempy "^1.0.1" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/client-logger@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.9.tgz#2f94d4378912c753e27e647880d429bb1ed23104" - integrity sha512-EJnXWvpTFEj462ixZbDouTN9X/FinRgaKKN6zXdhSSZUnm5PcZBtnoX5S+982z3LiAjdNIuAdZE/4vwBIAF88A== + "tiny-invariant" "^1.3.1" + +"@storybook/addon-outline@8.2.6": + "integrity" "sha512-uAlPtqDWlq7MQQ4zJT80qdjbSdLF/zsvtPhidX6h9cjLKNPWAv79xJQ14AJHaMv+Hzy5xKnM4wdEhgPbzKabQg==" + "resolved" "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.2.6.tgz" + "version" "8.2.6" dependencies: "@storybook/global" "^5.0.0" + "ts-dedent" "^2.0.0" -"@storybook/client-logger@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.5.3.tgz#5a33a8a1785dbe6beff60654bc8947724c0cd62e" - integrity sha512-vUFYALypjix5FoJ5M/XUP6KmyTnQJNW1poHdW7WXUVSg+lBM6E5eAtjTm0hdxNNDH8KSrdy24nCLra5h0X0BWg== +"@storybook/addon-toolbars@8.2.6": + "integrity" "sha512-0JmRirMpxHS6VZzBk0kY871xWTpkk3TN4S1sxoFf5fcnCfVTHDjEJ5Ws/QWru1RJlIZHuJKRdQIA6Vuq5X+KfQ==" + "resolved" "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.2.6.tgz" + "version" "8.2.6" + +"@storybook/addon-viewport@8.2.6": + "integrity" "sha512-IAxH9H8tVFzSmZhKf5E+EALiAdkp19RzGqP/rWluD8LH7oW5HumQE/4oN0ZhVMy1RxYsCKFYjWyAp7AuxeMRSw==" + "resolved" "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.2.6.tgz" + "version" "8.2.6" dependencies: - "@storybook/global" "^5.0.0" + "memoizerific" "^1.11.3" -"@storybook/codemod@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.0.9.tgz#78aecd97ef26c72d0320ed79b333d010f82dc2d9" - integrity sha512-ElBZj7MyUIOc4jmsPgORShqwQw7z7vtqeXsrcuVg4GoUYMCuva88+zOiHcKBnXMXYOSYAINKLHtcKD8t3PHuhA== - dependencies: - "@babel/core" "~7.21.0" - "@babel/preset-env" "~7.21.0" - "@babel/types" "~7.21.2" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.0.9" - "@storybook/node-logger" "7.0.9" - "@storybook/types" "7.0.9" - cross-spawn "^7.0.3" - globby "^11.0.2" - jscodeshift "^0.14.0" - lodash "^4.17.21" - prettier "^2.8.0" - recast "^0.23.1" - -"@storybook/codemod@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.5.3.tgz#8a294b8d12f304a2a9db902848977147394d451c" - integrity sha512-gzycFdqnF4drUjfzMTrLNHqi2jkw1lDeACUzQdug5uWxynZKAvMTHAgU0q9wvoYRR9Xhq8PhfKtXtYCCj2Er4Q== - dependencies: - "@babel/core" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/types" "^7.22.5" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/types" "7.5.3" - "@types/cross-spawn" "^6.0.2" - cross-spawn "^7.0.3" - globby "^11.0.2" - jscodeshift "^0.14.0" - lodash "^4.17.21" - prettier "^2.8.0" - recast "^0.23.1" - -"@storybook/components@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.5.3.tgz#3fa282252e02973ead9f537f5ae3b5aeee5be4c4" - integrity sha512-M3+cjvEsDGLUx8RvK5wyF6/13LNlUnKbMgiDE8Sxk/v/WPpyhOAIh/B8VmrU1psahS61Jd4MTkFmLf1cWau1vw== - dependencies: - "@radix-ui/react-select" "^1.2.2" - "@radix-ui/react-toolbar" "^1.0.4" - "@storybook/client-logger" "7.5.3" - "@storybook/csf" "^0.1.0" +"@storybook/angular@8.2.6": + "integrity" "sha512-kzOA4H09oDMq2KAg3iVDo0cWFx4u8qYbrMaMCbd/UjuSYd1Qx965Dx0m0i5i6t7BObUe5R5RlDhBo/JXAyQ55g==" + "resolved" "https://registry.npmjs.org/@storybook/angular/-/angular-8.2.6.tgz" + "version" "8.2.6" + dependencies: + "@storybook/builder-webpack5" "8.2.6" + "@storybook/components" "^8.2.6" + "@storybook/core-webpack" "8.2.6" "@storybook/global" "^5.0.0" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" - memoizerific "^1.11.3" - use-resize-observer "^9.1.0" - util-deprecate "^1.0.2" - -"@storybook/core-common@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.0.9.tgz#c44032111e47c4124c44a56e50afbdc3e023413f" - integrity sha512-IchifM372HCKfhqSIL9uShSNBHEGoPaDnKky3XfAz4IeI/iepFVWUtJ95znnhfRj4lzMenA6/Ng7TWWuQj5Q8w== - dependencies: - "@storybook/node-logger" "7.0.9" - "@storybook/types" "7.0.9" - "@types/node" "^16.0.0" - "@types/pretty-hrtime" "^1.0.0" - chalk "^4.1.0" - esbuild "^0.17.0" - esbuild-register "^3.4.0" - file-system-cache "^2.0.0" - find-up "^5.0.0" - fs-extra "^11.1.0" - glob "^8.1.0" - glob-promise "^6.0.2" - handlebars "^4.7.7" - lazy-universal-dotenv "^4.0.0" - picomatch "^2.3.0" - pkg-dir "^5.0.0" - pretty-hrtime "^1.0.3" - resolve-from "^5.0.0" - ts-dedent "^2.0.0" - -"@storybook/core-common@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.5.3.tgz#baaf4cb8e2e29ebd74626ee8cd5971f337ac4e23" - integrity sha512-WGMwjtVUxUzFwQz7Mgs0gLuNebIGNV55dCdZgurx2/y6QOkJ2v8D0b3iL+xKMV4B5Nwoc2DsM418Y+Hy3UQd+w== - dependencies: - "@storybook/core-events" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/types" "7.5.3" - "@types/find-cache-dir" "^3.2.1" + "@storybook/manager-api" "^8.2.6" + "@storybook/preview-api" "^8.2.6" + "@storybook/theming" "^8.2.6" "@types/node" "^18.0.0" - "@types/node-fetch" "^2.6.4" - "@types/pretty-hrtime" "^1.0.0" - chalk "^4.1.0" - esbuild "^0.18.0" - esbuild-register "^3.5.0" - file-system-cache "2.3.0" - find-cache-dir "^3.0.0" - find-up "^5.0.0" - fs-extra "^11.1.0" - glob "^10.0.0" - handlebars "^4.7.7" - lazy-universal-dotenv "^4.0.0" - node-fetch "^2.0.0" - picomatch "^2.3.0" - pkg-dir "^5.0.0" - pretty-hrtime "^1.0.3" - resolve-from "^5.0.0" - ts-dedent "^2.0.0" - -"@storybook/core-events@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.9.tgz#4aa5913cfa3ccb40b83bf4ffbb6ef832aa8f5402" - integrity sha512-xJiyX7Gq/TgDdBv+8KbfTJ4Sc7fCMeIEUqWTtnYCHWB7Mp6Iui37+caDX3aGQRTz7FVgb7aL5QkQES9Ihc1+dg== - -"@storybook/core-events@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.5.3.tgz#210089576844569a914cc0cd1e07119bac6eb0e4" - integrity sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ== - dependencies: - ts-dedent "^2.0.0" - -"@storybook/core-server@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.0.9.tgz#df1e3c76c2a439dbc610dcb016da2d242f880dee" - integrity sha512-cB8CX0EyneqdiE6f2Unk3p8ooFyr3dszzX8ffv+f1XVcidh98HuoUzGduqJYfLBZWjfMQIu9OuayAca9KvsOpQ== - dependencies: - "@aw-web-design/x-default-browser" "1.4.88" - "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "7.0.9" - "@storybook/core-common" "7.0.9" - "@storybook/core-events" "7.0.9" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.0.9" - "@storybook/docs-mdx" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/manager" "7.0.9" - "@storybook/node-logger" "7.0.9" - "@storybook/preview-api" "7.0.9" - "@storybook/telemetry" "7.0.9" - "@storybook/types" "7.0.9" - "@types/detect-port" "^1.3.0" - "@types/node" "^16.0.0" - "@types/node-fetch" "^2.5.7" - "@types/pretty-hrtime" "^1.0.0" + "@types/react" "^18.0.37" + "@types/react-dom" "^18.0.11" "@types/semver" "^7.3.4" - better-opn "^2.1.1" - boxen "^5.1.2" - chalk "^4.1.0" - cli-table3 "^0.6.1" - compression "^1.7.4" - detect-port "^1.3.0" - express "^4.17.3" - fs-extra "^11.1.0" - globby "^11.0.2" - ip "^2.0.0" - lodash "^4.17.21" - node-fetch "^2.6.7" - open "^8.4.0" - pretty-hrtime "^1.0.3" - prompts "^2.4.0" - read-pkg-up "^7.0.1" - semver "^7.3.7" - serve-favicon "^2.5.0" - telejson "^7.0.3" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - watchpack "^2.2.0" - ws "^8.2.3" - -"@storybook/core-server@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.5.3.tgz#23ea0757d6ffc0e9acc269b58efd7f75f5d781f6" - integrity sha512-Gmq1w7ulN/VIeTDboNcb6GNM+S8T0SqhJUqeoHzn0vLGnzxeuYRJ0V3ZJhGZiJfSmCNqYAjC8QUBf6uU1gLipw== - dependencies: - "@aw-web-design/x-default-browser" "1.4.126" - "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "7.5.3" - "@storybook/channels" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.5.3" - "@storybook/docs-mdx" "^0.1.0" + "@types/webpack-env" "^1.18.0" + "fd-package-json" "^1.2.0" + "find-up" "^5.0.0" + "semver" "^7.3.7" + "telejson" "^7.2.0" + "ts-dedent" "^2.0.0" + "tsconfig-paths-webpack-plugin" "^4.0.1" + "util-deprecate" "^1.0.2" + "webpack" "5" + +"@storybook/blocks@8.2.6": + "integrity" "sha512-nMlZJjVTyfOJ6xwORptsNuS1AZZlDbJUVXc2R8uukGd5GIXxxCdrPk4NvUsjfQslMT9LhYuFld3z62FATsM2rw==" + "resolved" "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.2.6.tgz" + "version" "8.2.6" + dependencies: + "@storybook/csf" "0.1.11" "@storybook/global" "^5.0.0" - "@storybook/manager" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/telemetry" "7.5.3" - "@storybook/types" "7.5.3" - "@types/detect-port" "^1.3.0" + "@storybook/icons" "^1.2.5" + "@types/lodash" "^4.14.167" + "color-convert" "^2.0.1" + "dequal" "^2.0.2" + "lodash" "^4.17.21" + "markdown-to-jsx" "^7.4.5" + "memoizerific" "^1.11.3" + "polished" "^4.2.2" + "react-colorful" "^5.1.2" + "telejson" "^7.2.0" + "ts-dedent" "^2.0.0" + "util-deprecate" "^1.0.2" + +"@storybook/builder-webpack5@8.2.6": + "integrity" "sha512-ba25XOXifbAxUYprw5WWcrYq/2DJODFoOHdv7YZqzjKeDDbg1Us8F+72zlBCdr38wY4V9084Sd8EBVXV5bxzRQ==" + "resolved" "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.2.6.tgz" + "version" "8.2.6" + dependencies: + "@storybook/core-webpack" "8.2.6" "@types/node" "^18.0.0" - "@types/pretty-hrtime" "^1.0.0" "@types/semver" "^7.3.4" - better-opn "^3.0.2" - chalk "^4.1.0" - cli-table3 "^0.6.1" - compression "^1.7.4" - detect-port "^1.3.0" - express "^4.17.3" - fs-extra "^11.1.0" - globby "^11.0.2" - ip "^2.0.0" - lodash "^4.17.21" - open "^8.4.0" - pretty-hrtime "^1.0.3" - prompts "^2.4.0" - read-pkg-up "^7.0.1" - semver "^7.3.7" - telejson "^7.2.0" - tiny-invariant "^1.3.1" - ts-dedent "^2.0.0" - util "^0.12.4" - util-deprecate "^1.0.2" - watchpack "^2.2.0" - ws "^8.2.3" - -"@storybook/core-webpack@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-7.5.3.tgz#40da9419c71d6e0134a4309cf0ed6f034baf5bdd" - integrity sha512-dhC94VeLwyPtZ2gvEND6J4alMaiFDsK8lJCYPNAahUr56f3nRDyVibE7prd94sAlfrdind1g5slP9VMP8cX+uQ== - dependencies: - "@storybook/core-common" "7.5.3" - "@storybook/node-logger" "7.5.3" - "@storybook/types" "7.5.3" + "browser-assert" "^1.2.1" + "case-sensitive-paths-webpack-plugin" "^2.4.0" + "cjs-module-lexer" "^1.2.3" + "constants-browserify" "^1.0.0" + "css-loader" "^6.7.1" + "es-module-lexer" "^1.5.0" + "express" "^4.19.2" + "fork-ts-checker-webpack-plugin" "^8.0.0" + "fs-extra" "^11.1.0" + "html-webpack-plugin" "^5.5.0" + "magic-string" "^0.30.5" + "path-browserify" "^1.0.1" + "process" "^0.11.10" + "semver" "^7.3.7" + "style-loader" "^3.3.1" + "terser-webpack-plugin" "^5.3.1" + "ts-dedent" "^2.0.0" + "url" "^0.11.0" + "util" "^0.12.4" + "util-deprecate" "^1.0.2" + "webpack" "5" + "webpack-dev-middleware" "^6.1.2" + "webpack-hot-middleware" "^2.25.1" + "webpack-virtual-modules" "^0.6.0" + +"@storybook/codemod@8.2.6": + "integrity" "sha512-+mFJ6R+JhJLpU7VPDlXU5Yn6nqIBq745GaEosnIiFOdNo3jaxJ58wq/sGhbQvoCHPUxMA+sDQvR7pS62YFoLRQ==" + "resolved" "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.2.6.tgz" + "version" "8.2.6" + dependencies: + "@babel/core" "^7.24.4" + "@babel/preset-env" "^7.24.4" + "@babel/types" "^7.24.0" + "@storybook/core" "8.2.6" + "@storybook/csf" "0.1.11" + "@types/cross-spawn" "^6.0.2" + "cross-spawn" "^7.0.3" + "globby" "^14.0.1" + "jscodeshift" "^0.15.1" + "lodash" "^4.17.21" + "prettier" "^3.1.1" + "recast" "^0.23.5" + "tiny-invariant" "^1.3.1" + +"@storybook/components@^8.2.6": + "integrity" "sha512-OkkcZ/f/6o3GdFEEK9ZHKIGHWUHmavZUYs5xaSgU64bOrA2aqEFtfeWWitZYTv3Euhk8MVLWfyEMDfez0AlvDg==" + "resolved" "https://registry.npmjs.org/@storybook/components/-/components-8.2.9.tgz" + "version" "8.2.9" + +"@storybook/core-server@8.2.6": + "integrity" "sha512-L8wT5C9D33gk8Y6fV9Gak52V/pzm60+TXXFRW2+YYMyRwyjC1c/eDePlrRIu7jAJiEs9UmdxxUwM4R/iEhOHzg==" + "resolved" "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.2.6.tgz" + "version" "8.2.6" + +"@storybook/core-webpack@8.2.6": + "integrity" "sha512-RSqRVNrxrp2pKoQeSmaiHMz7GvAzQ7BV+qPi9gDRDDCuAPrjpY8a17KyqmCJ617asDAb+OEQNBks802xM3pEQw==" + "resolved" "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.2.6.tgz" + "version" "8.2.6" + dependencies: "@types/node" "^18.0.0" - ts-dedent "^2.0.0" - -"@storybook/csf-plugin@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.5.3.tgz#803197a2042323323528014878e9f9f0cc50c193" - integrity sha512-yQ3S/IOT08Y7XTnlc3SPkrJKZ6Xld6liAlHn+ddjge4oZa0hUqwYLb+piXUhFMfL6Ij65cj4hu3vMbw89azIhg== - dependencies: - "@storybook/csf-tools" "7.5.3" - unplugin "^1.3.1" - -"@storybook/csf-tools@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.0.9.tgz#c64b9f119d9d9ebc506286f724527cf92ed4e8eb" - integrity sha512-m2qwUELMQ+mg0E4djjKw2MAnH8r97ZARO5er7KdrZRafH61ucxbVOv1zr0JzlN0TQd5PQM9Q+MsromuPY7GmvA== - dependencies: - "@babel/generator" "~7.21.1" - "@babel/parser" "~7.21.2" - "@babel/traverse" "~7.21.2" - "@babel/types" "~7.21.2" - "@storybook/csf" "^0.1.0" - "@storybook/types" "7.0.9" - fs-extra "^11.1.0" - recast "^0.23.1" - ts-dedent "^2.0.0" - -"@storybook/csf-tools@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.5.3.tgz#1b2a393b3402a4c2fdfb2eb4eb90c63463c106ae" - integrity sha512-676C3ISn7FQJKjb3DBWXhjGN2OQEv4s71dx+5D0TlmswDCOOGS8dYFjP8wVx51+mAIE8CROAw7vLHLtVKU7SwQ== - dependencies: - "@babel/generator" "^7.22.9" - "@babel/parser" "^7.22.7" - "@babel/traverse" "^7.22.8" - "@babel/types" "^7.22.5" - "@storybook/csf" "^0.1.0" - "@storybook/types" "7.5.3" - fs-extra "^11.1.0" - recast "^0.23.1" - ts-dedent "^2.0.0" + "ts-dedent" "^2.0.0" -"@storybook/csf@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" - integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== +"@storybook/core@8.2.6": + "integrity" "sha512-XY71g3AcpD6IiER9k9Lt+vlUMYfPIYgWekd7e0Ggzz2gJkPuLunKEdQccLGDSHf5OFAobHhrTJc7ZsvWhmDMag==" + "resolved" "https://registry.npmjs.org/@storybook/core/-/core-8.2.6.tgz" + "version" "8.2.6" dependencies: - lodash "^4.17.15" + "@storybook/csf" "0.1.11" + "@types/express" "^4.17.21" + "@types/node" "^18.0.0" + "browser-assert" "^1.2.1" + "esbuild" "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0" + "esbuild-register" "^3.5.0" + "express" "^4.19.2" + "process" "^0.11.10" + "recast" "^0.23.5" + "util" "^0.12.4" + "ws" "^8.2.3" + +"@storybook/csf-plugin@8.2.6": + "integrity" "sha512-USn7E/bMQYVqvFBuW6d9rKoSuCImjk0BAmc/0wIOuMQ/yQNp2Xze0m8eVkNHUIUDokyx0TXDjRjwq10Xxk16ag==" + "resolved" "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.2.6.tgz" + "version" "8.2.6" + dependencies: + "unplugin" "^1.3.1" -"@storybook/csf@^0.1.0": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.7.tgz#dcc6c16a353bc09c8c619ba1a23ba93b2aab0b9d" - integrity sha512-53JeLZBibjQxi0Ep+/AJTfxlofJlxy1jXcSKENlnKxHjWEYyHQCumMP5yTFjf7vhNnMjEpV3zx6t23ssFiGRyw== +"@storybook/csf@^0.0.1": + "integrity" "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==" + "resolved" "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz" + "version" "0.0.1" dependencies: - type-fest "^2.19.0" + "lodash" "^4.17.15" -"@storybook/docs-mdx@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz#33ba0e39d1461caf048b57db354b2cc410705316" - integrity sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg== - -"@storybook/docs-tools@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-7.5.3.tgz#1d1aec4a7546d70a2273ad99814a1dbecb8e80f7" - integrity sha512-f20EUQlwamcSPrOFn42fj9gpkZIDNCZkC3N19yGzLYiE4UMyaYQgRl18oLvqd3M6aBm6UW6SCoIIgeaOViBSqg== +"@storybook/csf@0.1.11": + "integrity" "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==" + "resolved" "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz" + "version" "0.1.11" dependencies: - "@storybook/core-common" "7.5.3" - "@storybook/preview-api" "7.5.3" - "@storybook/types" "7.5.3" - "@types/doctrine" "^0.0.3" - doctrine "^3.0.0" - lodash "^4.17.21" + "type-fest" "^2.19.0" "@storybook/global@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" - integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== - -"@storybook/manager-api@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.5.3.tgz#6e9e791a8996631dc77f3a0cecc34ce4f4869647" - integrity sha512-d8mVLr/5BEG4bAS2ZeqYTy/aX4jPEpZHdcLaWoB4mAM+PAL9wcWsirUyApKtDVYLITJf/hd8bb2Dm2ok6E45gA== - dependencies: - "@storybook/channels" "7.5.3" - "@storybook/client-logger" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/router" "7.5.3" - "@storybook/theming" "7.5.3" - "@storybook/types" "7.5.3" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - semver "^7.3.7" - store2 "^2.14.2" - telejson "^7.2.0" - ts-dedent "^2.0.0" - -"@storybook/manager@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.0.9.tgz#7bc1e8d38f719365c3523cb39341e2ced6275070" - integrity sha512-fyUb9DhTCnWBxjVQR0oTnXPStyIZh4DhQ1oXKEYKtV6ZeS+Qw4yXRDgciVXv6ifIBAdSEZOJ0o869c6NUt0iVQ== - -"@storybook/manager@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.5.3.tgz#e185fc056546c19d255cdc26b6f2698e04d3f8ab" - integrity sha512-3ZZrHYcXWAQXpDQZBvKyScGgQaAaBc63i+KC2mXqzTdXuJhVDUiylvqLRprBnrEprgePQLFrxGC2JSHUwH7dqg== - -"@storybook/mdx2-csf@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz#97f6df04d0bf616991cc1005a073ac004a7281e5" - integrity sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw== - -"@storybook/node-logger@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.0.9.tgz#9331aab88c1f3e8fe2bd7b849592edc8dd87ed83" - integrity sha512-aD3OxqnXxDDx3yPoUhoQ863cTfALWhx5i8wKDECb2LWZBAMsh21wJk/CB/fW5FPd9YwzJ8nbvQxlaNpfsM4N7w== - dependencies: - "@types/npmlog" "^4.1.2" - chalk "^4.1.0" - npmlog "^5.0.1" - pretty-hrtime "^1.0.3" - -"@storybook/node-logger@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.5.3.tgz#23133787f5b3427cef7301e10c6caf9132969fc1" - integrity sha512-7ZZDw/q3hakBj1FngsBjaHNIBguYAWojp7R1fFTvwkeunCi21EUzZjRBcqp10kB6BP3/NLX32bIQknsCWD76rQ== - -"@storybook/postinstall@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.5.3.tgz#66b9add9e315646dde2289d77c87118c3c8596a6" - integrity sha512-r+H3xGMu2A9yOSsygc3bDFhku8wpOZF3SqO19B7eAML12viHwUtYfyGL74svw4TMcKukyQ+KPn5QsSG+4bjZMg== - -"@storybook/preview-api@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.0.9.tgz#59fbf99e3f4d94263a65ba486f3e5be853ba4fee" - integrity sha512-cLyhq2nk0eiMOUwIIKhgDgZoS1ecRGojl92hR0agZDzNJrb1lvXK6uIkJh/Anl2Jbir28lAjQGU54voPODwTUA== - dependencies: - "@storybook/channel-postmessage" "7.0.9" - "@storybook/channels" "7.0.9" - "@storybook/client-logger" "7.0.9" - "@storybook/core-events" "7.0.9" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/types" "7.0.9" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview-api@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.5.3.tgz#eaf70f9b6888d0dac42ce39a296afd6acacf6156" - integrity sha512-LNmEf7oBRnZ1wG3bQ+P+TO29+NN5pSDJiAA6FabZBrtIVm+psc2lxBCDQvFYyAFzQSlt60toGKNW8+RfFNdR5Q== - dependencies: - "@storybook/channels" "7.5.3" - "@storybook/client-logger" "7.5.3" - "@storybook/core-events" "7.5.3" - "@storybook/csf" "^0.1.0" - "@storybook/global" "^5.0.0" - "@storybook/types" "7.5.3" - "@types/qs" "^6.9.5" - dequal "^2.0.2" - lodash "^4.17.21" - memoizerific "^1.11.3" - qs "^6.10.0" - synchronous-promise "^2.0.15" - ts-dedent "^2.0.0" - util-deprecate "^1.0.2" - -"@storybook/preview@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.5.3.tgz#9abe434ea9fb280a7d2141b72be2958f7eb9cc5b" - integrity sha512-Hf90NlLaSrdMZXPOHDCMPjTywVrQKK0e5CtzqWx/ZQz91JDINxJD+sGj2wZU+wuBtQcTtlsXc9OewlJ+9ETwIw== - -"@storybook/react-dom-shim@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.5.3.tgz#54fc7bda589be5f630738fd08d2a37d5bb7815fa" - integrity sha512-9aNcKdhoP36jMrcXgfzE9jVg/SpqPpWnUJM70upYoZXytG2wQSPtawLHHyC6kycvTzwncyfF3rwUnOFBB8zmig== - -"@storybook/router@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.5.3.tgz#e024ad96bc4bbf7250239921a251e828729e4747" - integrity sha512-/iNYCFore7R5n6eFHbBYoB0P2/sybTVpA+uXTNUd3UEt7Ro6CEslTaFTEiH2RVQwOkceBp/NpyWon74xZuXhMg== - dependencies: - "@storybook/client-logger" "7.5.3" - memoizerific "^1.11.3" - qs "^6.10.0" - -"@storybook/telemetry@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.0.9.tgz#2be6a1273a51228902a38c6dbb6d13e0fda5e7a4" - integrity sha512-2NB1k1eHgGq35g1nU+m3f9Poa85CiwwdlKVBIXpG5ht4J4XreCRrRDmiSF1vXLvZm7KEhXVS/IzLBAhR2vBdpA== - dependencies: - "@storybook/client-logger" "7.0.9" - "@storybook/core-common" "7.0.9" - chalk "^4.1.0" - detect-package-manager "^2.0.1" - fetch-retry "^5.0.2" - fs-extra "^11.1.0" - isomorphic-unfetch "^3.1.0" - nanoid "^3.3.1" - read-pkg-up "^7.0.1" - -"@storybook/telemetry@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.5.3.tgz#67d77c5cb33360c6f483a7cc89897fea160ca446" - integrity sha512-X6alII3o0jCb5xALuw+qcWmvyrbhlkmPeNZ6ZQXknOfB4DkwponFdWN5y6W7yGvr01xa5QBepJRV79isl97d8g== - dependencies: - "@storybook/client-logger" "7.5.3" - "@storybook/core-common" "7.5.3" - "@storybook/csf-tools" "7.5.3" - chalk "^4.1.0" - detect-package-manager "^2.0.1" - fetch-retry "^5.0.2" - fs-extra "^11.1.0" - read-pkg-up "^7.0.1" - -"@storybook/theming@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.5.3.tgz#bbcf547c8b3ec1e59e641c58155a44781d5f310d" - integrity sha512-Cjmthe1MAk0z4RKCZ7m72gAD8YD0zTAH97z5ryM1Qv84QXjiCQ143fGOmYz1xEQdNFpOThPcwW6FEccLHTkVcg== - dependencies: - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.5.3" - "@storybook/global" "^5.0.0" - memoizerific "^1.11.3" - -"@storybook/types@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.0.9.tgz#745c74ab88ed911dd75246de3ec3f84e71844f76" - integrity sha512-6aKrrsX3wgPMg9Nu3AK1GYmCZQiHqHv7l24ywNxZPv0T63rcpS86kWK4qVAywoaXGFc9GtRT+dz1rK8Fx50J9Q== - dependencies: - "@storybook/channels" "7.0.9" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "^2.0.0" - -"@storybook/types@7.5.3": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.5.3.tgz#be956805dafc09fa9a7a3dd4e0e5097ef08e4fd4" - integrity sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ== - dependencies: - "@storybook/channels" "7.5.3" - "@types/babel__core" "^7.0.0" - "@types/express" "^4.7.0" - file-system-cache "2.3.0" - -"@stripe/stripe-js@1.47.0": - version "1.47.0" - resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.47.0.tgz#48626a2e43302330aa826ce498a2d9761db4053d" - integrity sha512-jKSClqEIKS2MbPCXlSsseDSZyJ3dVrfUrYMz5LBY1o9iS2tfKbpTZACt8r2g+xyQozI+uHr76pVTyFsmBKA4Mg== - -"@swc/core-darwin-arm64@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.5.tgz#65b40093f622ec811713d2e2ebcdf8a39ae2e91d" - integrity sha512-Ol5ZwZYdTOZsv2NwjcT/qVVALKzVFeh+IJ4GNarr3P99+38Dkwi81OqCI1o/WaDXQYKAQC/V+CzMbkEuJJfq9Q== - -"@swc/core-darwin-x64@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.5.5.tgz#4e16d5fb55d8f3fa7d95df85e9cfbb5d57a7ac9e" - integrity sha512-XHWpKBIPKYLgh5/lV2PYjO84lkzf5JR51kjiloyz2Pa9HIV8tHoAP8bYdJwm4nUp2I7KcEh3pPH0AVu5LpxMKw== - -"@swc/core-linux-arm-gnueabihf@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.5.tgz#ab3fbac59b7c527fa5da115a96f3c87e07737686" - integrity sha512-vtoWNCWAe+CNSqtqIwFnIH48qgPPlUZKoQ4EVFeMM+7/kDi6SeNxoh5TierJs5bKAWxD49VkPvRoWFCk6V62mA== - -"@swc/core-linux-arm64-gnu@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.5.tgz#fcfb1d97f8e8ac6bd495aaaa0d15f8dfdb33b76b" - integrity sha512-L4l7M78U6h/rCAxId+y5Vu+1KfDRF6dJZtitFcaT293guiUQFwJv8gLxI4Jh5wFtZ0fYd0QaCuvh2Ip79CzGMg== - -"@swc/core-linux-arm64-musl@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.5.tgz#e8678d350500b3784bb125bef4eb97db1e388442" - integrity sha512-DkzJc13ukXa7oJpyn24BjIgsiOybYrc+IxjsQyfNlDrrs1QXP4elStcpkD02SsIuSyHjZV8Hw2HFBMQB3OHPrA== - -"@swc/core-linux-x64-gnu@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.5.tgz#e68406379d55447217a4ac1a79ffc7ce1e251b29" - integrity sha512-kj4ZwWJGeBEUzHrRQP2VudN+kkkYH7OI1dPVDc6kWQx5X4329JeKOas4qY0l7gDVjBbRwN9IbbPI6TIn2KfAug== - -"@swc/core-linux-x64-musl@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.5.tgz#40e439aeb265c3cc63526c51f4e89f6492092159" - integrity sha512-6pTorCs4mYhPhYtC4jNOnhGgjNd3DZcRoZ9P0tzXXP69aCbYjvlgNH/NRvAROp9AaVFeZ7a7PmCWb6+Rbe7NKg== - -"@swc/core-win32-arm64-msvc@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.5.tgz#efdd773a9e7ecc49bb246362a45dfc389f1fbfe0" - integrity sha512-o0/9pstmEjwZyrY/bA+mymF0zH7E+GT/XCVqdKeWW9Wn3gTTyWa5MZnrFgI2THQ+AXwdglMB/Zo76ARQPaz/+A== - -"@swc/core-win32-ia32-msvc@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.5.tgz#02082adef99bfa0101c6c94b04be636e39ed567f" - integrity sha512-B+nypUwsmCuaH6RtKWgiPCb+ENjxstJPPJeMJvBqlJqyCaIkZzN4M07Ozi3xVv1VG21SRkd6G3xIqRoalrNc0Q== - -"@swc/core-win32-x64-msvc@1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.5.tgz#699217ea438eb3b533b73d982659891d9aae7379" - integrity sha512-ry83ki9ZX0Q+GWGnqc2J618Z+FvKE8Ajn42F8EYi8Wj0q6Jz3mj+pJzgzakk2INm2ldEZ+FaRPipn4ozsZDcBg== - -"@swc/core@^1.3.82": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.5.5.tgz#e7b7ae4323d15ba990a0ffde135a849ffddec69d" - integrity sha512-M8O22EEgdSONLd+7KRrXj8pn+RdAZZ7ISnPjE9KCQQlI0kkFNEquWR+uFdlFxQfwlyCe/Zb6uGXGDvtcov4IMg== - dependencies: - "@swc/counter" "^0.1.2" - "@swc/types" "^0.1.5" - optionalDependencies: - "@swc/core-darwin-arm64" "1.5.5" - "@swc/core-darwin-x64" "1.5.5" - "@swc/core-linux-arm-gnueabihf" "1.5.5" - "@swc/core-linux-arm64-gnu" "1.5.5" - "@swc/core-linux-arm64-musl" "1.5.5" - "@swc/core-linux-x64-gnu" "1.5.5" - "@swc/core-linux-x64-musl" "1.5.5" - "@swc/core-win32-arm64-msvc" "1.5.5" - "@swc/core-win32-ia32-msvc" "1.5.5" - "@swc/core-win32-x64-msvc" "1.5.5" - -"@swc/counter@^0.1.2", "@swc/counter@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" - integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + "integrity" "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==" + "resolved" "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz" + "version" "5.0.0" + +"@storybook/icons@^1.2.5": + "integrity" "sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og==" + "resolved" "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.10.tgz" + "version" "1.2.10" + +"@storybook/manager-api@^8.2.6": + "integrity" "sha512-mkYvUlfqDw+0WbxIynh5TcrotmoXlumEsOA4+45zuNea8XpEgj5cNBUCnmfEO6yQ85swqkS8YYbMpg1cZyu/Vw==" + "resolved" "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.2.9.tgz" + "version" "8.2.9" + +"@storybook/preview-api@^8.2.6": + "integrity" "sha512-D8/t+a78OJqQAcT/ABa1C4YM/OaLGQ9IvCsp3Q9ruUqDCwuZBj8bG3D4477dlY4owX2ycC0rWYu3VvuK0EmJjA==" + "resolved" "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.2.9.tgz" + "version" "8.2.9" + +"@storybook/react-dom-shim@8.2.6": + "integrity" "sha512-B+x8UAEQPDp1yhN3tMh09NvSL38QNfJB7PAyLgKrfE7xIAzvewq+RLW2DfGkoZCy+Zr7QSHm1p7NOgud8+sQCg==" + "resolved" "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.2.6.tgz" + "version" "8.2.6" + +"@storybook/theming@^8.2.6": + "integrity" "sha512-OL0NFvowPX85N5zIYdgeKKaFm7V4Vgtci093vL3cDZT13LGH6GuEzJKkUFGuUGNPFlJc+EgTj0o6PYKrOLyQ6w==" + "resolved" "https://registry.npmjs.org/@storybook/theming/-/theming-8.2.9.tgz" + "version" "8.2.9" + +"@stripe/stripe-js@>=3.0.0 <4.0.0", "@stripe/stripe-js@3.5.0": + "integrity" "sha512-pKS3wZnJoL1iTyGBXAvCwduNNeghJHY6QSRSNNvpYnrrQrLZ6Owsazjyynu0e0ObRgks0i7Rv+pe2M7/MBTZpQ==" + "resolved" "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-3.5.0.tgz" + "version" "3.5.0" "@swc/helpers@^0.5.0": - version "0.5.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" - integrity sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A== + "integrity" "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==" + "resolved" "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz" + "version" "0.5.11" dependencies: - tslib "^2.4.0" - -"@swc/types@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.6.tgz#2f13f748995b247d146de2784d3eb7195410faba" - integrity sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg== - dependencies: - "@swc/counter" "^0.1.3" + "tslib" "^2.4.0" "@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" + "version" "4.0.6" dependencies: - defer-to-connect "^2.0.0" + "defer-to-connect" "^2.0.0" "@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + "version" "2.0.0" "@trivago/prettier-plugin-sort-imports@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz#725f411646b3942193a37041c84e0b2116339789" - integrity sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ== + "integrity" "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==" + "resolved" "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz" + "version" "4.3.0" dependencies: "@babel/generator" "7.17.7" "@babel/parser" "^7.20.5" "@babel/traverse" "7.23.2" "@babel/types" "7.17.0" - javascript-natural-sort "0.7.1" - lodash "^4.17.21" + "javascript-natural-sort" "0.7.1" + "lodash" "^4.17.21" "@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + "version" "0.2.0" "@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + "integrity" "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==" + "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz" + "version" "1.0.11" "@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + "version" "1.0.11" "@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + "version" "1.0.3" "@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + "integrity" "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + "version" "1.0.4" "@tufjs/canonical-json@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" - integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + "integrity" "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==" + "resolved" "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz" + "version" "2.0.0" "@tufjs/models@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" - integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== + "integrity" "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==" + "resolved" "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz" + "version" "2.0.1" dependencies: "@tufjs/canonical-json" "2.0.0" - minimatch "^9.0.4" + "minimatch" "^9.0.4" + +"@tybys/wasm-util@^0.9.0": + "integrity" "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==" + "resolved" "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz" + "version" "0.9.0" + dependencies: + "tslib" "^2.4.0" -"@types/babel__core@7.20.5", "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== +"@types/babel__core@^7.1.14", "@types/babel__core@7.20.5": + "integrity" "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==" + "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -6249,56 +4307,56 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + "integrity" "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==" + "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz" + "version" "7.6.8" dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + "integrity" "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==" + "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + "version" "7.4.4" dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + "integrity" "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==" + "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz" + "version" "7.20.5" dependencies: "@babel/types" "^7.20.7" "@types/big.js@6.2.2": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.2.2.tgz#69422ec9ef59df1330ccfde2106d9e1159a083c3" - integrity sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA== + "integrity" "sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==" + "resolved" "https://registry.npmjs.org/@types/big.js/-/big.js-6.2.2.tgz" + "version" "6.2.2" "@types/body-parser@*", "@types/body-parser@1.19.5": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + "integrity" "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==" + "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz" + "version" "1.19.5" dependencies: "@types/connect" "*" "@types/node" "*" -"@types/bonjour@^3.5.9": - version "3.5.13" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" - integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== +"@types/bonjour@^3.5.13", "@types/bonjour@^3.5.9": + "integrity" "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==" + "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz" + "version" "3.5.13" dependencies: "@types/node" "*" "@types/cache-manager@3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@types/cache-manager/-/cache-manager-3.4.2.tgz#d57e7e5e6374d1037bdce753a05c9703e4483401" - integrity sha512-1IwA74t5ID4KWo0Kndal16MhiPSZgMe1fGc+MLT6j5r+Ab7jku36PFTl4PP6MiWw0BJscM9QpZEo00qixNQoRg== + "integrity" "sha512-1IwA74t5ID4KWo0Kndal16MhiPSZgMe1fGc+MLT6j5r+Ab7jku36PFTl4PP6MiWw0BJscM9QpZEo00qixNQoRg==" + "resolved" "https://registry.npmjs.org/@types/cache-manager/-/cache-manager-3.4.2.tgz" + "version" "3.4.2" "@types/cacheable-request@^6.0.1": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + "integrity" "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==" + "resolved" "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz" + "version" "6.0.3" dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "^3.1.4" @@ -6306,717 +4364,668 @@ "@types/responselike" "^1.0.0" "@types/color-convert@*": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.3.tgz#e93f5c991eda87a945058b47044f5f0008b0dce9" - integrity sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg== + "integrity" "sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==" + "resolved" "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.3.tgz" + "version" "2.0.3" dependencies: "@types/color-name" "*" "@types/color-name@*": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.4.tgz#e002611ff627347818d440a05e81650e9a4053b8" - integrity sha512-hulKeREDdLFesGQjl96+4aoJSHY5b2GRjagzzcqCfIrWhe5vkCqIvrLbqzBaI1q94Vg8DNJZZqTR5ocdWmWclg== + "integrity" "sha512-hulKeREDdLFesGQjl96+4aoJSHY5b2GRjagzzcqCfIrWhe5vkCqIvrLbqzBaI1q94Vg8DNJZZqTR5ocdWmWclg==" + "resolved" "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" -"@types/color@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/color/-/color-3.0.3.tgz#e6d8d72b7aaef4bb9fe80847c26c7c786191016d" - integrity sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA== +"@types/color@3.0.6": + "integrity" "sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==" + "resolved" "https://registry.npmjs.org/@types/color/-/color-3.0.6.tgz" + "version" "3.0.6" dependencies: "@types/color-convert" "*" -"@types/connect-history-api-fallback@^1.3.5": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" - integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== +"@types/connect-history-api-fallback@^1.3.5", "@types/connect-history-api-fallback@^1.5.4": + "integrity" "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==" + "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz" + "version" "1.5.4" dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + "integrity" "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==" + "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" + "version" "3.4.38" dependencies: "@types/node" "*" "@types/cross-spawn@^6.0.2": - version "6.0.6" - resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.6.tgz#0163d0b79a6f85409e0decb8dcca17147f81fd22" - integrity sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA== + "integrity" "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==" + "resolved" "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz" + "version" "6.0.6" dependencies: "@types/node" "*" "@types/d3-scale-chromatic@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz#fc0db9c10e789c351f4c42d96f31f2e4df8f5644" - integrity sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw== + "integrity" "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + "resolved" "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz" + "version" "3.0.3" "@types/d3-scale@^4.0.3": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.8.tgz#d409b5f9dcf63074464bf8ddfb8ee5a1f95945bb" - integrity sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ== + "integrity" "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==" + "resolved" "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz" + "version" "4.0.8" dependencies: "@types/d3-time" "*" "@types/d3-time@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.3.tgz#3c186bbd9d12b9d84253b6be6487ca56b54f88be" - integrity sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw== + "integrity" "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + "resolved" "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz" + "version" "3.0.3" "@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + "integrity" "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==" + "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz" + "version" "4.1.12" dependencies: "@types/ms" "*" -"@types/detect-port@^1.3.0": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.5.tgz#deecde143245989dee0e82115f3caba5ee0ea747" - integrity sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA== - -"@types/doctrine@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" - integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== - -"@types/ejs@^3.1.1": - version "3.1.5" - resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.5.tgz#49d738257cc73bafe45c13cb8ff240683b4d5117" - integrity sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg== - "@types/emscripten@^1.39.6": - version "1.39.11" - resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.11.tgz#8f8c40cb831a2406c0ee5b0c6e847b3bf659c2e3" - integrity sha512-dOeX2BeNA7j6BTEqJQL3ut0bRCfsyQMd5i4FT8JfHfYhAOuJPCGh0dQFbxVJxUyQ+75x6enhDdndGb624/QszA== + "integrity" "sha512-dOeX2BeNA7j6BTEqJQL3ut0bRCfsyQMd5i4FT8JfHfYhAOuJPCGh0dQFbxVJxUyQ+75x6enhDdndGb624/QszA==" + "resolved" "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.11.tgz" + "version" "1.39.11" "@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + "integrity" "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==" + "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" + "version" "3.7.7" dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.56.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" - integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + "integrity" "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==" + "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz" + "version" "8.56.10" dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@*", "@types/estree@^1.0.5", "@types/estree@1.0.5": + "integrity" "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" + "version" "1.0.5" "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa" - integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ== + "integrity" "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==" + "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz" + "version" "4.19.0" dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/send" "*" -"@types/express@*", "@types/express@^4.17.13", "@types/express@^4.7.0": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== +"@types/express@*", "@types/express@^4.17.13", "@types/express@^4.17.21": + "integrity" "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==" + "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" + "version" "4.17.21" dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/find-cache-dir@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz#7b959a4b9643a1e6a1a5fe49032693cc36773501" - integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw== - -"@types/fs-extra@11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.1.tgz#f542ec47810532a8a252127e6e105f487e0a6ea5" - integrity sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA== - dependencies: - "@types/jsonfile" "*" - "@types/node" "*" - -"@types/glob@^8.0.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" + "@types/qs" "*" + "@types/serve-static" "*" "@types/google-spreadsheet@3.1.5": - version "3.1.5" - resolved "https://registry.yarnpkg.com/@types/google-spreadsheet/-/google-spreadsheet-3.1.5.tgz#2bdc6f9f5372551e0506cb6ef3f562adcf44fc2e" - integrity sha512-7N+mDtZ1pmya2RRFPPl4KYc2TRgiqCNBLUZfyrKfER+u751JgCO+C24/LzF70UmUm/zhHUbzRZ5mtfaxekQ1ZQ== + "integrity" "sha512-7N+mDtZ1pmya2RRFPPl4KYc2TRgiqCNBLUZfyrKfER+u751JgCO+C24/LzF70UmUm/zhHUbzRZ5mtfaxekQ1ZQ==" + "resolved" "https://registry.npmjs.org/@types/google-spreadsheet/-/google-spreadsheet-3.1.5.tgz" + "version" "3.1.5" "@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + "integrity" "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==" + "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz" + "version" "4.1.9" dependencies: "@types/node" "*" +"@types/hast@^3.0.0": + "integrity" "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==" + "resolved" "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "@types/unist" "*" + "@types/html-minifier-terser@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" - integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" "@types/http-cache-semantics@*": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + "integrity" "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + "resolved" "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz" + "version" "4.0.4" "@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + "integrity" "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + "resolved" "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz" + "version" "2.0.4" -"@types/http-proxy@^1.17.8": - version "1.17.14" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" - integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== +"@types/http-proxy@^1.17.10", "@types/http-proxy@^1.17.8": + "integrity" "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==" + "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz" + "version" "1.17.15" dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + "integrity" "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + "version" "2.0.6" "@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + "integrity" "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==" + "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" + "version" "3.0.3" dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + "integrity" "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==" + "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + "version" "3.0.4" dependencies: "@types/istanbul-lib-report" "*" "@types/jest@29.4.4": - version "29.4.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.4.tgz#ba257bd7b1876dec9e0b4fb82fa60eec5505e5f1" - integrity sha512-qezb65VIH7X1wobSnd6Lvdve7PXSyQRa3dljTkhTtDhi603RvHQCshSlJcuyMLHJpeHgY3NKwvDJWxMOOHxGDQ== + "integrity" "sha512-qezb65VIH7X1wobSnd6Lvdve7PXSyQRa3dljTkhTtDhi603RvHQCshSlJcuyMLHJpeHgY3NKwvDJWxMOOHxGDQ==" + "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.4.4.tgz" + "version" "29.4.4" dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" + "expect" "^29.0.0" + "pretty-format" "^29.0.0" "@types/jsdom@^20.0.0": - version "20.0.1" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" - integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== + "integrity" "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==" + "resolved" "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz" + "version" "20.0.1" dependencies: "@types/node" "*" "@types/tough-cookie" "*" - parse5 "^7.0.0" + "parse5" "^7.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== +"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + "integrity" "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + "version" "7.0.15" "@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/jsonfile@*": - version "6.1.4" - resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" - integrity sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ== - dependencies: - "@types/node" "*" + "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + "version" "0.0.29" "@types/jsonwebtoken@9.0.2": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#9eeb56c76dd555039be2a3972218de5bd3b8d83e" - integrity sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q== + "integrity" "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==" + "resolved" "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" + "version" "9.0.2" dependencies: "@types/node" "*" "@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + "integrity" "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==" + "resolved" "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz" + "version" "3.1.4" dependencies: "@types/node" "*" -"@types/lodash@4.17.0": - version "4.17.0" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3" - integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA== - -"@types/lodash@^4.14.167": - version "4.17.1" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.1.tgz#0fabfcf2f2127ef73b119d98452bd317c4a17eb8" - integrity sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q== +"@types/lodash@^4.14.167", "@types/lodash@4.17.7": + "integrity" "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==" + "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz" + "version" "4.17.7" "@types/mdast@^3.0.0": - version "3.0.15" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" - integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== + "integrity" "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==" + "resolved" "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz" + "version" "3.0.15" dependencies: "@types/unist" "^2" "@types/mdx@^2.0.0": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" - integrity sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw== - -"@types/mime-types@^2.1.0": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.4.tgz#93a1933e24fed4fb9e4adc5963a63efcbb3317a2" - integrity sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w== + "integrity" "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + "resolved" "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz" + "version" "2.0.13" "@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + "integrity" "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" + "version" "1.3.5" "@types/ms@*": - version "0.7.34" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" - integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== + "integrity" "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz" + "version" "0.7.34" -"@types/node-fetch@^2.5.7", "@types/node-fetch@^2.6.4": - version "2.6.11" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" - integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== +"@types/mute-stream@^0.0.4": + "integrity" "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==" + "resolved" "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz" + "version" "0.0.4" dependencies: "@types/node" "*" - form-data "^4.0.0" "@types/node-forge@^1.3.0": - version "1.3.11" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" - integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + "integrity" "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==" + "resolved" "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz" + "version" "1.3.11" dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=8.1.0": - version "20.12.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.11.tgz#c4ef00d3507000d17690643278a60dc55a9dc9be" - integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw== +"@types/node@*", "@types/node@^18.0.0 || >=20.0.0", "@types/node@^20.14.9", "@types/node@>=8.1.0", "@types/node@20.14.10": + "integrity" "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz" + "version" "20.14.10" dependencies: - undici-types "~5.26.4" + "undici-types" "~5.26.4" -"@types/node@^16.0.0": - version "16.18.97" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.97.tgz#d7926a8030f0d714d555b4550c0cc7731495cfe5" - integrity sha512-4muilE1Lbfn57unR+/nT9AFjWk0MtWi5muwCEJqnOvfRQDbSfLCUdN7vCIg8TYuaANfhLOV85ve+FNpiUsbSRg== - -"@types/node@^18.0.0", "@types/node@^18.16.9": - version "18.19.33" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.33.tgz#98cd286a1b8a5e11aa06623210240bcc28e95c48" - integrity sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A== +"@types/node@^18.0.0": + "integrity" "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz" + "version" "18.19.33" dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + "undici-types" "~5.26.4" -"@types/npmlog@^4.1.2": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.6.tgz#792341665000209ee76997df8a16300fda6d77cb" - integrity sha512-0l3z16vnlJGl2Mi/rgJFrdwfLZ4jfNYgE6ZShEpjqhHuGTqdEzNles03NpYHwUMVYZa+Tj46UxKIEpE78lQ3DQ== +"@types/node@^22.1.0": + "integrity" "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz" + "version" "22.5.0" dependencies: - "@types/node" "*" + "undici-types" "~6.19.2" "@types/oauth@*": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@types/oauth/-/oauth-0.9.4.tgz#dcbab5efa2f34f312b915f80685760ccc8111e0a" - integrity sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A== + "integrity" "sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A==" + "resolved" "https://registry.npmjs.org/@types/oauth/-/oauth-0.9.4.tgz" + "version" "0.9.4" dependencies: "@types/node" "*" "@types/papaparse@5.3.7": - version "5.3.7" - resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.3.7.tgz#8d3bf9e62ac2897df596f49d9ca59a15451aa247" - integrity sha512-f2HKmlnPdCvS0WI33WtCs5GD7X1cxzzS/aduaxSu3I7TbhWlENjSPs6z5TaB9K0J+BH1jbmqTaM+ja5puis4wg== + "integrity" "sha512-f2HKmlnPdCvS0WI33WtCs5GD7X1cxzzS/aduaxSu3I7TbhWlENjSPs6z5TaB9K0J+BH1jbmqTaM+ja5puis4wg==" + "resolved" "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.7.tgz" + "version" "5.3.7" dependencies: "@types/node" "*" "@types/parse-json@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" - integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + "integrity" "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz" + "version" "4.0.2" "@types/passport-google-oauth20@2.0.16": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@types/passport-google-oauth20/-/passport-google-oauth20-2.0.16.tgz#9e39c1203d56496d89392538e6109626e253bc28" - integrity sha512-ayXK2CJ7uVieqhYOc6k/pIr5pcQxOLB6kBev+QUGS7oEZeTgIs1odDobXRqgfBPvXzl0wXCQHftV5220czZCPA== + "integrity" "sha512-ayXK2CJ7uVieqhYOc6k/pIr5pcQxOLB6kBev+QUGS7oEZeTgIs1odDobXRqgfBPvXzl0wXCQHftV5220czZCPA==" + "resolved" "https://registry.npmjs.org/@types/passport-google-oauth20/-/passport-google-oauth20-2.0.16.tgz" + "version" "2.0.16" dependencies: "@types/express" "*" "@types/passport" "*" "@types/passport-oauth2" "*" "@types/passport-oauth2@*": - version "1.4.16" - resolved "https://registry.yarnpkg.com/@types/passport-oauth2/-/passport-oauth2-1.4.16.tgz#59189a9d69783a63d7fb92d19cd28f96c95740af" - integrity sha512-Sdr0rpAdkiidUOtyaapGgvXyMjqYlMTFHRy7gtJtzr0/ysEIa72N3j2FSHIRc14h29g1+dzDl8IW2WT2Mu29vQ== + "integrity" "sha512-Sdr0rpAdkiidUOtyaapGgvXyMjqYlMTFHRy7gtJtzr0/ysEIa72N3j2FSHIRc14h29g1+dzDl8IW2WT2Mu29vQ==" + "resolved" "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.16.tgz" + "version" "1.4.16" dependencies: "@types/express" "*" "@types/oauth" "*" "@types/passport" "*" "@types/passport@*": - version "1.0.16" - resolved "https://registry.yarnpkg.com/@types/passport/-/passport-1.0.16.tgz#5a2918b180a16924c4d75c31254c31cdca5ce6cf" - integrity sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A== + "integrity" "sha512-FD0qD5hbPWQzaM0wHUnJ/T0BBCJBxCeemtnCwc/ThhTg3x9jfrAcRUmj5Dopza+MfFS9acTe3wk7rcVnRIp/0A==" + "resolved" "https://registry.npmjs.org/@types/passport/-/passport-1.0.16.tgz" + "version" "1.0.16" dependencies: "@types/express" "*" -"@types/pretty-hrtime@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#ee1bd8c9f7a01b3445786aad0ef23aba5f511a44" - integrity sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA== - "@types/prop-types@*": - version "15.7.12" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" - integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + "integrity" "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" + "version" "15.7.12" -"@types/qs@*", "@types/qs@^6.9.5": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== - -"@types/ramda@0.29.3": - version "0.29.3" - resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.29.3.tgz#6e4d4066df900a3456cf402bcef9b78b6990a754" - integrity sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q== - dependencies: - types-ramda "^0.29.4" +"@types/qs@*": + "integrity" "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz" + "version" "6.9.15" "@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + "integrity" "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" + "version" "1.2.7" -"@types/react-dom@^16.9.14": - version "16.9.24" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.24.tgz#4d193d7d011267fca842e8a10a2d738f92ec5c30" - integrity sha512-Gcmq2JTDheyWn/1eteqyzzWKSqDjYU6KYsIvH7thb7CR5OYInAWOX+7WnKf6PaU/cbdOc4szJItcDEJO7UGmfA== +"@types/react-dom@^18.0.11": + "integrity" "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==" + "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz" + "version" "18.3.0" dependencies: - "@types/react" "^16" + "@types/react" "*" -"@types/react@>=16": - version "18.3.1" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.1.tgz#fed43985caa834a2084d002e4771e15dfcbdbe8e" - integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== +"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^18.0.37", "@types/react@>=16": + "integrity" "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz" + "version" "18.3.4" dependencies: "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@^16", "@types/react@^16.14.34": - version "16.14.60" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.60.tgz#f7ab62a329b82826f12d02bc8031d4ef4b5e0d81" - integrity sha512-wIFmnczGsTcgwCBeIYOuy2mdXEiKZ5znU/jNOnMZPQyCcIxauMGWlX0TNG4lZ7NxRKj7YUIZRneJQSSdB2jKgg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "^0.16" - csstype "^3.0.2" + "csstype" "^3.0.2" "@types/responselike@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" - integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + "integrity" "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==" + "resolved" "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz" + "version" "1.0.3" dependencies: "@types/node" "*" "@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" -"@types/scheduler@^0.16": - version "0.16.8" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== +"@types/retry@0.12.2": + "integrity" "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" + "version" "0.12.2" -"@types/semver@^7.3.12", "@types/semver@^7.3.4", "@types/semver@^7.5.0", "@types/semver@^7.5.8": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== +"@types/semver@^7.3.12", "@types/semver@^7.3.4", "@types/semver@^7.5.0": + "integrity" "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz" + "version" "7.5.8" "@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + "integrity" "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==" + "resolved" "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz" + "version" "0.17.4" dependencies: "@types/mime" "^1" "@types/node" "*" -"@types/serve-index@^1.9.1": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" - integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== +"@types/serve-index@^1.9.1", "@types/serve-index@^1.9.4": + "integrity" "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==" + "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz" + "version" "1.9.4" dependencies: "@types/express" "*" -"@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== +"@types/serve-static@*", "@types/serve-static@^1.13.10", "@types/serve-static@^1.15.5": + "integrity" "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==" + "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz" + "version" "1.15.7" dependencies: "@types/http-errors" "*" "@types/node" "*" "@types/send" "*" "@types/sinonjs__fake-timers@^6.0.1": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d" - integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== + "integrity" "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==" + "resolved" "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz" + "version" "6.0.4" "@types/sizzle@^2.3.2": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627" - integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== + "integrity" "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==" + "resolved" "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz" + "version" "2.3.8" -"@types/sockjs@^0.3.33": - version "0.3.36" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" - integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== +"@types/sockjs@^0.3.33", "@types/sockjs@^0.3.36": + "integrity" "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==" + "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz" + "version" "0.3.36" dependencies: "@types/node" "*" "@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + "integrity" "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" + "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + "version" "2.0.3" "@types/tough-cookie@*", "@types/tough-cookie@^4.0.2": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" - integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== + "integrity" "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + "resolved" "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz" + "version" "4.0.5" + +"@types/unist@*", "@types/unist@^2", "@types/unist@^2.0.0": + "integrity" "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==" + "resolved" "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz" + "version" "2.0.9" -"@types/unist@^2": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" - integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== +"@types/unist@^3.0.0": + "integrity" "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + "resolved" "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz" + "version" "3.0.3" -"@types/unist@^2.0.0": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.9.tgz#72e164381659a49557b0a078b28308f2c6a3e1ce" - integrity sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ== +"@types/uuid@^9.0.1": + "integrity" "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==" + "resolved" "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz" + "version" "9.0.8" "@types/validator@^13.11.8": - version "13.11.10" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.10.tgz#feb364018cdd1f3d970a9e8c7f1c314c0a264fff" - integrity sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg== + "integrity" "sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg==" + "resolved" "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz" + "version" "13.11.10" "@types/webpack-env@^1.18.0": - version "1.18.5" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.5.tgz#eccda0b04fe024bed505881e2e532f9c119169bf" - integrity sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA== + "integrity" "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==" + "resolved" "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.5.tgz" + "version" "1.18.5" -"@types/ws@^8.5.5": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== +"@types/wrap-ansi@^3.0.0": + "integrity" "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" + "resolved" "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz" + "version" "3.0.0" + +"@types/ws@^8.5.10", "@types/ws@^8.5.5": + "integrity" "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==" + "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz" + "version" "8.5.12" dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + "integrity" "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" + "version" "21.0.3" "@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + "integrity" "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==" + "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" + "version" "17.0.32" dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== + "integrity" "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz" + "version" "6.21.0" dependencies: "@eslint-community/regexpp" "^4.5.1" "@typescript-eslint/scope-manager" "6.21.0" "@typescript-eslint/type-utils" "6.21.0" "@typescript-eslint/utils" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== + "debug" "^4.3.4" + "graphemer" "^1.4.0" + "ignore" "^5.2.4" + "natural-compare" "^1.4.0" + "semver" "^7.5.4" + "ts-api-utils" "^1.0.1" + +"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.13.2 || ^7.0.0", "@typescript-eslint/parser@6.21.0": + "integrity" "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz" + "version" "6.21.0" dependencies: "@typescript-eslint/scope-manager" "6.21.0" "@typescript-eslint/types" "6.21.0" "@typescript-eslint/typescript-estree" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" + "debug" "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + "integrity" "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" + "version" "5.62.0" dependencies: "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" "@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== + "integrity" "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz" + "version" "6.21.0" dependencies: "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/scope-manager@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz#054a27b1090199337a39cf755f83d9f2ce26546b" - integrity sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg== +"@typescript-eslint/scope-manager@7.18.0": + "integrity" "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz" + "version" "7.18.0" + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + +"@typescript-eslint/scope-manager@8.3.0": + "integrity" "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz" + "version" "8.3.0" dependencies: - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" + "@typescript-eslint/types" "8.3.0" + "@typescript-eslint/visitor-keys" "8.3.0" -"@typescript-eslint/scope-manager@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz#bb19096d11ec6b87fb6640d921df19b813e02047" - integrity sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g== +"@typescript-eslint/type-utils@^7.16.0": + "integrity" "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz" + "version" "7.18.0" dependencies: - "@typescript-eslint/types" "7.8.0" - "@typescript-eslint/visitor-keys" "7.8.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + "debug" "^4.3.4" + "ts-api-utils" "^1.3.0" "@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== + "integrity" "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz" + "version" "6.21.0" dependencies: "@typescript-eslint/typescript-estree" "6.21.0" "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/type-utils@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz#8a75accce851d0a331aa9331268ef64e9b300270" - integrity sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g== - dependencies: - "@typescript-eslint/typescript-estree" "7.10.0" - "@typescript-eslint/utils" "7.10.0" - debug "^4.3.4" - ts-api-utils "^1.3.0" - -"@typescript-eslint/type-utils@^7.3.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz#9de166f182a6e4d1c5da76e94880e91831e3e26f" - integrity sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A== - dependencies: - "@typescript-eslint/typescript-estree" "7.8.0" - "@typescript-eslint/utils" "7.8.0" - debug "^4.3.4" - ts-api-utils "^1.3.0" + "debug" "^4.3.4" + "ts-api-utils" "^1.0.1" "@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + "integrity" "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" + "version" "5.62.0" "@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + "integrity" "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz" + "version" "6.21.0" -"@typescript-eslint/types@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.10.0.tgz#da92309c97932a3a033762fd5faa8b067de84e3b" - integrity sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg== +"@typescript-eslint/types@7.18.0": + "integrity" "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz" + "version" "7.18.0" -"@typescript-eslint/types@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.8.0.tgz#1fd2577b3ad883b769546e2d1ef379f929a7091d" - integrity sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw== +"@typescript-eslint/types@8.3.0": + "integrity" "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz" + "version" "8.3.0" "@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + "integrity" "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" + "version" "5.62.0" dependencies: "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "semver" "^7.3.7" + "tsutils" "^3.21.0" "@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + "integrity" "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz" + "version" "6.21.0" dependencies: "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/typescript-estree@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz#6dcdc5de3149916a6a599fa89dde5c471b88b8bb" - integrity sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g== - dependencies: - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/typescript-estree@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz#b028a9226860b66e623c1ee55cc2464b95d2987c" - integrity sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg== - dependencies: - "@typescript-eslint/types" "7.8.0" - "@typescript-eslint/visitor-keys" "7.8.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "minimatch" "9.0.3" + "semver" "^7.5.4" + "ts-api-utils" "^1.0.1" + +"@typescript-eslint/typescript-estree@7.18.0": + "integrity" "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz" + "version" "7.18.0" + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + "debug" "^4.3.4" + "globby" "^11.1.0" + "is-glob" "^4.0.3" + "minimatch" "^9.0.4" + "semver" "^7.6.0" + "ts-api-utils" "^1.3.0" + +"@typescript-eslint/typescript-estree@8.3.0": + "integrity" "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz" + "version" "8.3.0" + dependencies: + "@typescript-eslint/types" "8.3.0" + "@typescript-eslint/visitor-keys" "8.3.0" + "debug" "^4.3.4" + "fast-glob" "^3.3.2" + "is-glob" "^4.0.3" + "minimatch" "^9.0.4" + "semver" "^7.6.0" + "ts-api-utils" "^1.3.0" + +"@typescript-eslint/utils@^5.45.0": + "integrity" "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" + "version" "5.62.0" + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + "eslint-scope" "^5.1.1" + "semver" "^7.3.7" + +"@typescript-eslint/utils@^7.11.0 || ^8.0.0-alpha.37": + "integrity" "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz" + "version" "8.3.0" + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.3.0" + "@typescript-eslint/types" "8.3.0" + "@typescript-eslint/typescript-estree" "8.3.0" + +"@typescript-eslint/utils@^7.16.0": + "integrity" "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz" + "version" "7.18.0" + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" "@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + "integrity" "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz" + "version" "6.21.0" dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" @@ -7024,128 +5033,101 @@ "@typescript-eslint/scope-manager" "6.21.0" "@typescript-eslint/types" "6.21.0" "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.10.0.tgz#8ee43e5608c9f439524eaaea8de5b358b15c51b3" - integrity sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.10.0" - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/typescript-estree" "7.10.0" + "semver" "^7.5.4" -"@typescript-eslint/utils@7.8.0", "@typescript-eslint/utils@^7.3.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.8.0.tgz#57a79f9c0c0740ead2f622e444cfaeeb9fd047cd" - integrity sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ== +"@typescript-eslint/utils@7.18.0": + "integrity" "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz" + "version" "7.18.0" dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.15" - "@types/semver" "^7.5.8" - "@typescript-eslint/scope-manager" "7.8.0" - "@typescript-eslint/types" "7.8.0" - "@typescript-eslint/typescript-estree" "7.8.0" - semver "^7.6.0" - -"@typescript-eslint/utils@^5.45.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" "@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + "integrity" "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" + "version" "5.62.0" dependencies: "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" + "eslint-visitor-keys" "^3.3.0" "@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + "integrity" "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz" + "version" "6.21.0" dependencies: "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" + "eslint-visitor-keys" "^3.4.1" -"@typescript-eslint/visitor-keys@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz#2af2e91e73a75dd6b70b4486c48ae9d38a485a78" - integrity sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg== +"@typescript-eslint/visitor-keys@7.18.0": + "integrity" "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz" + "version" "7.18.0" dependencies: - "@typescript-eslint/types" "7.10.0" - eslint-visitor-keys "^3.4.3" + "@typescript-eslint/types" "7.18.0" + "eslint-visitor-keys" "^3.4.3" -"@typescript-eslint/visitor-keys@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz#7285aab991da8bee411a42edbd5db760d22fdd91" - integrity sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA== +"@typescript-eslint/visitor-keys@8.3.0": + "integrity" "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz" + "version" "8.3.0" dependencies: - "@typescript-eslint/types" "7.8.0" - eslint-visitor-keys "^3.4.3" + "@typescript-eslint/types" "8.3.0" + "eslint-visitor-keys" "^3.4.3" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": + "integrity" "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "resolved" "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" + "version" "1.2.0" "@vitejs/plugin-basic-ssl@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz#8b840305a6b48e8764803435ec0c716fa27d3802" - integrity sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A== + "integrity" "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==" + "resolved" "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz" + "version" "1.1.0" -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== +"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1": + "integrity" "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" + "version" "1.12.1" dependencies: "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + "integrity" "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" + "version" "1.11.6" "@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + "integrity" "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" + "version" "1.11.6" "@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== + "integrity" "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz" + "version" "1.12.1" "@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + "integrity" "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" + "version" "1.11.6" dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.6" "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" "@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + "integrity" "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" + "version" "1.11.6" "@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== + "integrity" "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz" + "version" "1.12.1" dependencies: "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-buffer" "1.12.1" @@ -7153,28 +5135,28 @@ "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + "integrity" "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" + "version" "1.11.6" dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + "integrity" "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" + "version" "1.11.6" dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + "integrity" "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" + "version" "1.11.6" -"@webassemblyjs/wasm-edit@^1.11.5", "@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== +"@webassemblyjs/wasm-edit@^1.12.1": + "integrity" "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz" + "version" "1.12.1" dependencies: "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-buffer" "1.12.1" @@ -7186,9 +5168,9 @@ "@webassemblyjs/wast-printer" "1.12.1" "@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + "integrity" "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz" + "version" "1.12.1" dependencies: "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" @@ -7197,19 +5179,19 @@ "@webassemblyjs/utf8" "1.11.6" "@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== + "integrity" "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz" + "version" "1.12.1" dependencies: "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== +"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1": + "integrity" "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" + "version" "1.12.1" dependencies: "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-api-error" "1.11.6" @@ -7219,781 +5201,731 @@ "@webassemblyjs/utf8" "1.11.6" "@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== + "integrity" "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz" + "version" "1.12.1" dependencies: "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + "version" "1.2.0" "@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10": - version "3.0.0-rc.15" - resolved "https://registry.yarnpkg.com/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz#4e40e7d2eb28825c9a35ab9d04c363931d7c0e67" - integrity sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA== - dependencies: - tslib "^2.4.0" + "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + "version" "4.2.2" "@yarnpkg/fslib@2.10.3": - version "2.10.3" - resolved "https://registry.yarnpkg.com/@yarnpkg/fslib/-/fslib-2.10.3.tgz#a8c9893df5d183cf6362680b9f1c6d7504dd5717" - integrity sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A== + "integrity" "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==" + "resolved" "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz" + "version" "2.10.3" dependencies: "@yarnpkg/libzip" "^2.3.0" - tslib "^1.13.0" + "tslib" "^1.13.0" -"@yarnpkg/libzip@2.3.0", "@yarnpkg/libzip@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/libzip/-/libzip-2.3.0.tgz#fe1e762e47669f6e2c960fc118436608d834e3be" - integrity sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg== +"@yarnpkg/libzip@^2.3.0", "@yarnpkg/libzip@2.3.0": + "integrity" "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==" + "resolved" "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz" + "version" "2.3.0" dependencies: "@types/emscripten" "^1.39.6" - tslib "^1.13.0" + "tslib" "^1.13.0" -"@yarnpkg/lockfile@1.1.0", "@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +"@yarnpkg/lockfile@^1.1.0", "@yarnpkg/lockfile@1.1.0": + "integrity" "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + "resolved" "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" + "version" "1.1.0" "@yarnpkg/parsers@3.0.0-rc.46": - version "3.0.0-rc.46" - resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz#03f8363111efc0ea670e53b0282cd3ef62de4e01" - integrity sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== - dependencies: - js-yaml "^3.10.0" - tslib "^2.4.0" + "integrity" "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==" + "resolved" "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz" + "version" "3.0.0-rc.46" + dependencies: + "js-yaml" "^3.10.0" + "tslib" "^2.4.0" -abab@^2.0.5, abab@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abbrev@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" - integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" - integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== - dependencies: - acorn "^8.1.0" - acorn-walk "^8.0.2" - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - -acorn@^8.0.4, acorn@^8.1.0, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -address@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== - -adjust-sourcemap-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" - integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - -agent-base@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@2.1.1, ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-formats@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" - integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@8.10.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@8.12.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - 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" - -ajv@8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" - integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - 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" - -ajv@^8.0.0, ajv@^8.12.0, ajv@^8.9.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" - integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -alphavantage@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/alphavantage/-/alphavantage-2.2.0.tgz#a07829c91bdc089cfe84a521aff389673a652ac7" - integrity sha512-wsN6c78DWEfnmT7zIqs95N0cBT/h9WHxby3pSscUtTA+wRIO29BqDJQqZnQcy6GddlIsBp5GQk8gEeIAR0FdBg== - dependencies: - cross-fetch "^3.0.5" - -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-colors@4.1.3, ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html-community@0.0.8, ansi-html-community@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" - integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -app-root-dir@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" - integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== - -app-root-path@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" - integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== - -append-field@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" - integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -arch@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-hidden@^1.1.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" - integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== - dependencies: - tslib "^2.0.0" - -aria-query@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw== - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - -array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== - dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-includes@^3.1.7: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - -array-timsort@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926" - integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-union@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" - integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== - -array.prototype.findlastindex@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.2.1" - get-intrinsic "^1.2.3" - is-array-buffer "^3.0.4" - is-shared-array-buffer "^1.0.2" - -arrify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -asn1js@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" - integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== - dependencies: - pvtsutils "^1.3.2" - pvutils "^1.1.3" - tslib "^2.4.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -ast-types-flow@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - -ast-types@0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" - integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== - dependencies: - tslib "^2.0.1" - -ast-types@^0.16.1: - version "0.16.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" - integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== - dependencies: - tslib "^2.0.1" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== - -async@^2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -async@^3.2.0, async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -autoprefixer@10.4.18: - version "10.4.18" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.18.tgz#fcb171a3b017be7cb5d8b7a825f5aacbf2045163" - integrity sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g== - dependencies: - browserslist "^4.23.0" - caniuse-lite "^1.0.30001591" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -autoprefixer@^10.4.9: - version "10.4.19" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" - integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== - dependencies: - browserslist "^4.23.0" - caniuse-lite "^1.0.30001599" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -await-lock@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/await-lock/-/await-lock-2.2.2.tgz#a95a9b269bfd2f69d22b17a321686f551152bcef" - integrity sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== - -axios@^0.21.4: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -axios@^1.6.0: - version "1.6.8" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" - integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axobject-query@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" - integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== - dependencies: - ast-types-flow "0.0.7" - -axobject-query@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.0.0.tgz#04a4c90dce33cc5d606c76d6216e3b250ff70dab" - integrity sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw== - dependencies: - dequal "^2.0.3" - -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== +"@zkochan/js-yaml@0.0.7": + "integrity" "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==" + "resolved" "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz" + "version" "0.0.7" + dependencies: + "argparse" "^2.0.1" + +"abab@^2.0.6": + "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + "version" "2.0.6" + +"abbrev@^2.0.0": + "integrity" "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" + "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz" + "version" "2.0.0" + +"abort-controller@^3.0.0": + "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" + "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "event-target-shim" "^5.0.0" + +"accepts@^1.3.5", "accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": + "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" + "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + "version" "1.3.8" + dependencies: + "mime-types" "~2.1.34" + "negotiator" "0.6.3" + +"acorn-globals@^7.0.0": + "integrity" "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==" + "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "acorn" "^8.1.0" + "acorn-walk" "^8.0.2" + +"acorn-import-attributes@^1.9.5": + "integrity" "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==" + "resolved" "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz" + "version" "1.9.5" + +"acorn-jsx@^5.3.2": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" + +"acorn-walk@^8.0.0", "acorn-walk@^8.0.2", "acorn-walk@^8.1.1": + "integrity" "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" + "version" "8.3.2" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8", "acorn@^8.0.4", "acorn@^8.1.0", "acorn@^8.11.3", "acorn@^8.4.1", "acorn@^8.5.0", "acorn@^8.7.1", "acorn@^8.8.1", "acorn@^8.8.2", "acorn@^8.9.0": + "integrity" "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + "version" "8.11.3" + +"address@^1.0.1": + "integrity" "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" + "resolved" "https://registry.npmjs.org/address/-/address-1.2.2.tgz" + "version" "1.2.2" + +"adjust-sourcemap-loader@^4.0.0": + "integrity" "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==" + "resolved" "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "loader-utils" "^2.0.0" + "regex-parser" "^2.2.11" + +"adm-zip@^0.5.10": + "integrity" "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==" + "resolved" "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz" + "version" "0.5.15" + +"agent-base@^7.0.2", "agent-base@^7.1.0", "agent-base@^7.1.1": + "integrity" "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==" + "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz" + "version" "7.1.1" + dependencies: + "debug" "^4.3.4" + +"agent-base@6": + "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" + "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "debug" "4" + +"aggregate-error@^3.0.0": + "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" + "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "clean-stack" "^2.0.0" + "indent-string" "^4.0.0" + +"ajv-formats@^2.1.1": + "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" + "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ajv" "^8.0.0" + +"ajv-formats@2.1.1": + "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" + "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ajv" "^8.0.0" + +"ajv-formats@3.0.1": + "integrity" "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==" + "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "ajv" "^8.0.0" + +"ajv-keywords@^3.5.2": + "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + "version" "3.5.2" + +"ajv-keywords@^5.1.0": + "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "fast-deep-equal" "^3.1.3" + +"ajv@^6.12.4": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + 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" + +"ajv@^6.12.5", "ajv@^6.9.1": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + 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" + +"ajv@^8.0.0", "ajv@^8.12.0", "ajv@^8.8.2", "ajv@^8.9.0", "ajv@8.16.0": + "integrity" "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" + "version" "8.16.0" + dependencies: + "fast-deep-equal" "^3.1.3" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.4.1" + +"ajv@8.10.0": + "integrity" "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz" + "version" "8.10.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ajv@8.12.0": + "integrity" "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + "version" "8.12.0" + dependencies: + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" + +"ajv@8.13.0": + "integrity" "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz" + "version" "8.13.0" + dependencies: + "fast-deep-equal" "^3.1.3" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.4.1" + +"alphavantage@2.2.0": + "integrity" "sha512-wsN6c78DWEfnmT7zIqs95N0cBT/h9WHxby3pSscUtTA+wRIO29BqDJQqZnQcy6GddlIsBp5GQk8gEeIAR0FdBg==" + "resolved" "https://registry.npmjs.org/alphavantage/-/alphavantage-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "cross-fetch" "^3.0.5" + +"ansi-colors@^4.1.1", "ansi-colors@^4.1.3", "ansi-colors@4.1.3": + "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + "version" "4.1.3" + +"ansi-escapes@^3.0.0": + "integrity" "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" + "version" "3.2.0" + +"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.2": + "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + "version" "4.3.2" + dependencies: + "type-fest" "^0.21.3" + +"ansi-escapes@^7.0.0": + "integrity" "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "environment" "^1.0.0" + +"ansi-html-community@^0.0.8", "ansi-html-community@0.0.8": + "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + "version" "0.0.8" + +"ansi-regex@^2.0.0": + "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "version" "2.1.1" + +"ansi-regex@^3.0.0": + "integrity" "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" + "version" "3.0.1" + +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" + +"ansi-regex@^6.0.1": + "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + "version" "6.0.1" + +"ansi-styles@^2.2.1": + "integrity" "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + "version" "2.2.1" + +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.0.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansi-styles@^5.0.0": + "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + "version" "5.2.0" + +"ansi-styles@^6.0.0", "ansi-styles@^6.2.1": + "integrity" "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + "version" "6.2.1" + +"ansi-styles@^6.1.0": + "integrity" "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + "version" "6.2.1" + +"any-observable@^0.3.0": + "integrity" "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" + "resolved" "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz" + "version" "0.3.0" + +"any-promise@^1.1.0": + "integrity" "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + "version" "1.3.0" + +"anymatch@^3.0.3", "anymatch@~3.1.2": + "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + "version" "3.1.3" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"app-root-path@^3.0.0": + "integrity" "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==" + "resolved" "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz" + "version" "3.1.0" + +"append-field@^1.0.0": + "integrity" "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + "resolved" "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" + "version" "1.0.0" + +"arch@^2.1.2": + "integrity" "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" + "resolved" "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz" + "version" "2.2.0" + +"arg@^4.1.0": + "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + "version" "4.1.3" + +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"aria-query@^3.0.0": + "integrity" "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ast-types-flow" "0.0.7" + "commander" "^2.11.0" + +"aria-query@5.3.0": + "integrity" "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==" + "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "dequal" "^2.0.3" + +"array-buffer-byte-length@^1.0.1": + "integrity" "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==" + "resolved" "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "call-bind" "^1.0.5" + "is-array-buffer" "^3.0.4" + +"array-flatten@1.1.1": + "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + "version" "1.1.1" + +"array-includes@^3.1.7": + "integrity" "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==" + "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz" + "version" "3.1.8" + dependencies: + "call-bind" "^1.0.7" + "define-properties" "^1.2.1" + "es-abstract" "^1.23.2" + "es-object-atoms" "^1.0.0" + "get-intrinsic" "^1.2.4" + "is-string" "^1.0.7" + +"array-timsort@^1.0.3": + "integrity" "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==" + "resolved" "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz" + "version" "1.0.3" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"array-union@^3.0.1": + "integrity" "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz" + "version" "3.0.1" + +"array.prototype.findlastindex@^1.2.3": + "integrity" "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==" + "resolved" "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz" + "version" "1.2.5" + dependencies: + "call-bind" "^1.0.7" + "define-properties" "^1.2.1" + "es-abstract" "^1.23.2" + "es-errors" "^1.3.0" + "es-object-atoms" "^1.0.0" + "es-shim-unscopables" "^1.0.2" + +"array.prototype.flat@^1.3.2": + "integrity" "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==" + "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "es-shim-unscopables" "^1.0.0" + +"array.prototype.flatmap@^1.3.2": + "integrity" "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==" + "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "es-shim-unscopables" "^1.0.0" + +"arraybuffer.prototype.slice@^1.0.3": + "integrity" "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==" + "resolved" "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "array-buffer-byte-length" "^1.0.1" + "call-bind" "^1.0.5" + "define-properties" "^1.2.1" + "es-abstract" "^1.22.3" + "es-errors" "^1.2.1" + "get-intrinsic" "^1.2.3" + "is-array-buffer" "^3.0.4" + "is-shared-array-buffer" "^1.0.2" + +"arrify@^2.0.0": + "integrity" "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + "resolved" "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" + "version" "2.0.1" + +"asn1@~0.2.3": + "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" + "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + "version" "0.2.6" + dependencies: + "safer-buffer" "~2.1.0" + +"asn1js@^3.0.1", "asn1js@^3.0.5": + "integrity" "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==" + "resolved" "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz" + "version" "3.0.5" + dependencies: + "pvtsutils" "^1.3.2" + "pvutils" "^1.1.3" + "tslib" "^2.4.0" + +"assert-plus@^1.0.0", "assert-plus@1.0.0": + "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "version" "1.0.0" + +"ast-types-flow@0.0.7": + "integrity" "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" + "version" "0.0.7" + +"ast-types@^0.16.1": + "integrity" "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==" + "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz" + "version" "0.16.1" + dependencies: + "tslib" "^2.0.1" + +"async@^2.6.4": + "integrity" "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==" + "resolved" "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + "version" "2.6.4" + dependencies: + "lodash" "^4.17.14" + +"async@^3.2.0", "async@3.2.0": + "integrity" "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + "resolved" "https://registry.npmjs.org/async/-/async-3.2.0.tgz" + "version" "3.2.0" + +"async@^3.2.3": + "integrity" "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + "resolved" "https://registry.npmjs.org/async/-/async-3.2.5.tgz" + "version" "3.2.5" + +"asynckit@^0.4.0": + "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "version" "0.4.0" + +"at-least-node@^1.0.0": + "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + "version" "1.0.0" + +"autoprefixer@^10.4.9", "autoprefixer@10.4.19": + "integrity" "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==" + "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz" + "version" "10.4.19" + dependencies: + "browserslist" "^4.23.0" + "caniuse-lite" "^1.0.30001599" + "fraction.js" "^4.3.7" + "normalize-range" "^0.1.2" + "picocolors" "^1.0.0" + "postcss-value-parser" "^4.2.0" + +"available-typed-arrays@^1.0.7": + "integrity" "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==" + "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "possible-typed-array-names" "^1.0.0" + +"await-lock@^2.2.2": + "integrity" "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==" + "resolved" "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz" + "version" "2.2.2" + +"aws-sign2@~0.7.0": + "integrity" "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + "version" "0.7.0" + +"aws4@^1.8.0": + "integrity" "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" + "version" "1.12.0" + +"axios@^0.21.4": + "integrity" "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" + "version" "0.21.4" + dependencies: + "follow-redirects" "^1.14.0" + +"axios@^1.6.7", "axios@^1.7.2": + "integrity" "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==" + "resolved" "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz" + "version" "1.7.5" + dependencies: + "follow-redirects" "^1.15.6" + "form-data" "^4.0.0" + "proxy-from-env" "^1.1.0" + +"axobject-query@2.0.2": + "integrity" "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==" + "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "ast-types-flow" "0.0.7" + +"axobject-query@4.0.0": + "integrity" "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==" + "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "dequal" "^2.0.3" + +"babel-core@^7.0.0-bridge.0": + "integrity" "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + "version" "7.0.0-bridge.0" + +"babel-jest@^29.0.0", "babel-jest@^29.7.0": + "integrity" "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==" + "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" + "babel-plugin-istanbul" "^6.1.1" + "babel-preset-jest" "^29.6.3" + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "slash" "^3.0.0" -babel-loader@9.1.3, babel-loader@^9.0.0, babel-loader@^9.1.2: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== +"babel-loader@^9.1.2", "babel-loader@9.1.3": + "integrity" "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==" + "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz" + "version" "9.1.3" dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" + "find-cache-dir" "^4.0.0" + "schema-utils" "^4.0.0" -babel-plugin-const-enum@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz#3d25524106f68f081e187829ba736b251c289861" - integrity sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg== +"babel-plugin-const-enum@^1.0.1": + "integrity" "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==" + "resolved" "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz" + "version" "1.2.0" dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.3.3" "@babel/traverse" "^7.16.0" -babel-plugin-istanbul@6.1.1, babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== +"babel-plugin-istanbul@^6.1.1": + "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" + "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + "version" "6.1.1" dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" + "istanbul-lib-instrument" "^5.0.4" + "test-exclude" "^6.0.0" -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== +"babel-plugin-jest-hoist@^29.6.3": + "integrity" "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==" + "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" + "version" "29.6.3" dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== +"babel-plugin-macros@^2.8.0": + "integrity" "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==" + "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" + "version" "2.8.0" dependencies: "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" + "cosmiconfig" "^6.0.0" + "resolve" "^1.12.0" -babel-plugin-named-exports-order@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09" - integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== - -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== +"babel-plugin-macros@^3.1.0": + "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" + "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + "version" "3.1.0" dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" + "@babel/runtime" "^7.12.5" + "cosmiconfig" "^7.0.0" + "resolve" "^1.19.0" -babel-plugin-polyfill-corejs2@^0.4.10, babel-plugin-polyfill-corejs2@^0.4.8: - version "0.4.11" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== +"babel-plugin-polyfill-corejs2@^0.4.10": + "integrity" "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz" + "version" "0.4.11" dependencies: "@babel/compat-data" "^7.22.6" "@babel/helper-define-polyfill-provider" "^0.6.2" - semver "^6.3.1" + "semver" "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== +"babel-plugin-polyfill-corejs3@^0.10.1", "babel-plugin-polyfill-corejs3@^0.10.4": + "integrity" "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz" + "version" "0.10.4" dependencies: "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" - -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" - -babel-plugin-polyfill-corejs3@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" - integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" - core-js-compat "^3.34.0" - -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -babel-plugin-polyfill-regenerator@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" - integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.5.0" + "core-js-compat" "^3.36.1" -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== +"babel-plugin-polyfill-regenerator@^0.6.1": + "integrity" "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==" + "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz" + "version" "0.6.2" dependencies: "@babel/helper-define-polyfill-provider" "^0.6.2" -babel-plugin-transform-typescript-metadata@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz#7a327842d8c36ffe07ee1b5276434e56c297c9b7" - integrity sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg== +"babel-plugin-transform-typescript-metadata@^0.3.1": + "integrity" "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==" + "resolved" "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz" + "version" "0.3.2" dependencies: "@babel/helper-plugin-utils" "^7.0.0" -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== +"babel-preset-current-node-syntax@^1.0.0": + "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" + "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + "version" "1.0.1" dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -8008,2727 +5940,2646 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-arraybuffer@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz#4b944fac0191aa5907afe2d8c999ccc57ce80f45" - integrity sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ== - -base64-js@^1.3.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base64url@3.x.x: - version "3.0.1" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" - integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== - -basic-auth@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" - integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - dependencies: - safe-buffer "5.1.2" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -better-opn@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" - integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== - dependencies: - open "^7.0.3" - -better-opn@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817" - integrity sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ== - dependencies: - open "^8.0.4" - -big-integer@^1.6.44: - version "1.6.52" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" - integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== - -big.js@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" - integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -bignumber.js@^9.0.0: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bl@^4.0.3, bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blob-util@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" - integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== - -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - 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" - -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -bonjour-service@^1.0.11: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" - integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== - dependencies: - fast-deep-equal "^3.1.3" - multicast-dns "^7.2.5" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -bootstrap@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.0.tgz#97b9f29ac98f98dfa43bf7468262d84392552fd7" - integrity sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw== - -borc@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" - integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== - dependencies: - bignumber.js "^9.0.0" - buffer "^5.5.0" - commander "^2.15.0" - ieee754 "^1.1.13" - iso-url "~0.4.7" - json-text-sequence "~0.1.0" - readable-stream "^3.6.0" - -boxen@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - 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" - -bplist-parser@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" - integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== - dependencies: - big-integer "^1.6.44" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-assert@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" - integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== - dependencies: - pako "~0.2.0" - -browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.22.2, browserslist@^4.23.0: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== - dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -bs-logger@0.x, bs-logger@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bull@4.10.4: - version "4.10.4" - resolved "https://registry.yarnpkg.com/bull/-/bull-4.10.4.tgz#db39ee0c3bfbe3b76f1f35db800501de5bba4f84" - integrity sha512-o9m/7HjS/Or3vqRd59evBlWCXd9Lp+ALppKseoSKHaykK46SmRjAilX98PgmOz1yeVaurt8D5UtvEt4bUjM3eA== - dependencies: - cron-parser "^4.2.1" - debuglog "^1.0.0" - get-port "^5.1.1" - ioredis "^5.0.0" - lodash "^4.17.21" - msgpackr "^1.5.2" - semver "^7.3.2" - uuid "^8.3.0" - -busboy@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cacache@^18.0.0: - version "18.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.3.tgz#864e2c18414e1e141ae8763f31e46c2cb96d1b21" - integrity sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg== +"babel-preset-jest@^29.6.3": + "integrity" "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==" + "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" + "version" "29.6.3" + dependencies: + "babel-plugin-jest-hoist" "^29.6.3" + "babel-preset-current-node-syntax" "^1.0.0" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"base64-arraybuffer@^0.2.0": + "integrity" "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==" + "resolved" "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz" + "version" "0.2.0" + +"base64-js@^1.3.0", "base64-js@^1.3.1": + "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + "version" "1.5.1" + +"base64url@3.x.x": + "integrity" "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + "resolved" "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz" + "version" "3.0.1" + +"basic-auth@^2.0.1": + "integrity" "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==" + "resolved" "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "safe-buffer" "5.1.2" + +"batch@0.6.1": + "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + "version" "0.6.1" + +"bcrypt-pbkdf@^1.0.0": + "integrity" "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==" + "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "tweetnacl" "^0.14.3" + +"big.js@^5.2.2": + "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + "version" "5.2.2" + +"big.js@6.2.1": + "integrity" "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==" + "resolved" "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz" + "version" "6.2.1" + +"bignumber.js@^9.0.0": + "integrity" "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" + "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz" + "version" "9.1.2" + +"binary-extensions@^2.0.0": + "integrity" "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" + "version" "2.3.0" + +"bl@^4.0.3", "bl@^4.1.0": + "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" + "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "buffer" "^5.5.0" + "inherits" "^2.0.4" + "readable-stream" "^3.4.0" + +"blob-util@2.0.2": + "integrity" "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" + "resolved" "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz" + "version" "2.0.2" + +"bluebird@^3.7.2": + "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + "version" "3.7.2" + +"body-parser@1.20.1": + "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + "version" "1.20.1" + 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" + +"body-parser@1.20.2": + "integrity" "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" + "version" "1.20.2" + dependencies: + "bytes" "3.1.2" + "content-type" "~1.0.5" + "debug" "2.6.9" + "depd" "2.0.0" + "destroy" "1.2.0" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "on-finished" "2.4.1" + "qs" "6.11.0" + "raw-body" "2.5.2" + "type-is" "~1.6.18" + "unpipe" "1.0.0" + +"bonjour-service@^1.0.11", "bonjour-service@^1.2.1": + "integrity" "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==" + "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "fast-deep-equal" "^3.1.3" + "multicast-dns" "^7.2.5" + +"boolbase@^1.0.0": + "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + "version" "1.0.0" + +"bootstrap@4.6.0": + "integrity" "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" + "resolved" "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz" + "version" "4.6.0" + +"borc@^2.1.1": + "integrity" "sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w==" + "resolved" "https://registry.npmjs.org/borc/-/borc-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "bignumber.js" "^9.0.0" + "buffer" "^5.5.0" + "commander" "^2.15.0" + "ieee754" "^1.1.13" + "iso-url" "~0.4.7" + "json-text-sequence" "~0.1.0" + "readable-stream" "^3.6.0" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"brace-expansion@^2.0.1": + "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "balanced-match" "^1.0.0" + +"braces@^3.0.2", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"browser-assert@^1.2.1": + "integrity" "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==" + "resolved" "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz" + "version" "1.2.1" + +"browserslist@^4.0.0", "browserslist@^4.21.10", "browserslist@^4.21.4", "browserslist@^4.21.5", "browserslist@^4.23.0", "browserslist@^4.23.1", "browserslist@>= 4.21.0": + "integrity" "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz" + "version" "4.23.3" + dependencies: + "caniuse-lite" "^1.0.30001646" + "electron-to-chromium" "^1.5.4" + "node-releases" "^2.0.18" + "update-browserslist-db" "^1.1.0" + +"bs-logger@^0.2.6", "bs-logger@0.x": + "integrity" "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==" + "resolved" "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + "version" "0.2.6" + dependencies: + "fast-json-stable-stringify" "2.x" + +"bser@2.1.1": + "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" + "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "node-int64" "^0.4.0" + +"btoa@^1.2.1": + "integrity" "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + "resolved" "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz" + "version" "1.2.1" + +"buffer-crc32@~0.2.3": + "integrity" "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + "version" "0.2.13" + +"buffer-equal-constant-time@1.0.1": + "integrity" "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + "resolved" "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + "version" "1.0.1" + +"buffer-from@^1.0.0": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"buffer@^5.5.0": + "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + "version" "5.7.1" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.1.13" + +"builtin-modules@^1.1.1": + "integrity" "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==" + "resolved" "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + "version" "1.1.1" + +"bull@^3.3 || ^4.0.0", "bull@4.10.4": + "integrity" "sha512-o9m/7HjS/Or3vqRd59evBlWCXd9Lp+ALppKseoSKHaykK46SmRjAilX98PgmOz1yeVaurt8D5UtvEt4bUjM3eA==" + "resolved" "https://registry.npmjs.org/bull/-/bull-4.10.4.tgz" + "version" "4.10.4" + dependencies: + "cron-parser" "^4.2.1" + "debuglog" "^1.0.0" + "get-port" "^5.1.1" + "ioredis" "^5.0.0" + "lodash" "^4.17.21" + "msgpackr" "^1.5.2" + "semver" "^7.3.2" + "uuid" "^8.3.0" + +"bundle-name@^4.1.0": + "integrity" "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==" + "resolved" "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "run-applescript" "^7.0.0" + +"busboy@^1.0.0": + "integrity" "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==" + "resolved" "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "streamsearch" "^1.1.0" + +"bytes@3.0.0": + "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + "version" "3.0.0" + +"bytes@3.1.2": + "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + "version" "3.1.2" + +"cacache@^18.0.0": + "integrity" "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==" + "resolved" "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz" + "version" "18.0.3" dependencies: "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^10.0.1" - minipass "^7.0.3" - minipass-collect "^2.0.1" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cache-manager-redis-store@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cache-manager-redis-store/-/cache-manager-redis-store-2.0.0.tgz#25db93656c4ab7b3591bd6ca370e188ef90754c9" - integrity sha512-bWLWlUg6nCYHiJLCCYxY2MgvwvKnvlWwrbuynrzpjEIhfArD2GC9LtutIHFEPeyGVQN6C+WEw+P3r+BFBwhswg== - dependencies: - redis "^3.0.2" - -cache-manager@3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-3.4.3.tgz#c978d58f82b414ade08903d4d72b56a80a4978be" - integrity sha512-6+Hfzy1SNs/thUwo+07pV0ozgxc4sadrAN0eFVGvXl/X9nz3J0BqEnnEoyxEn8jnF+UkEo0MKpyk9BO80hMeiQ== - dependencies: - async "3.2.0" - lodash "^4.17.21" - lru-cache "6.0.0" - -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - -cacheable-request@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" - integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" - -cachedir@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" - integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== - -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - 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" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001591, caniuse-lite@^1.0.30001599: - version "1.0.30001617" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz#809bc25f3f5027ceb33142a7d6c40759d7a901eb" - integrity sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA== - -case-sensitive-paths-webpack-plugin@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - 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" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -character-entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" - integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chart.js@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.2.0.tgz#dd281b2ce890bff32f3e249cf2972a1e74bc032c" - integrity sha512-wbtcV+QKeH0F7gQZaCJEIpsNriFheacouJQTVIjITi3eQA8bTlIBoknz0+dgV79aeKLNMAX+nDslIVE/nJ3rzA== + "fs-minipass" "^3.0.0" + "glob" "^10.2.2" + "lru-cache" "^10.0.1" + "minipass" "^7.0.3" + "minipass-collect" "^2.0.1" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "p-map" "^4.0.0" + "ssri" "^10.0.0" + "tar" "^6.1.11" + "unique-filename" "^3.0.0" + +"cache-content-type@^1.0.0": + "integrity" "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==" + "resolved" "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "mime-types" "^2.1.18" + "ylru" "^1.2.0" + +"cache-manager-redis-store@2.0.0": + "integrity" "sha512-bWLWlUg6nCYHiJLCCYxY2MgvwvKnvlWwrbuynrzpjEIhfArD2GC9LtutIHFEPeyGVQN6C+WEw+P3r+BFBwhswg==" + "resolved" "https://registry.npmjs.org/cache-manager-redis-store/-/cache-manager-redis-store-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "redis" "^3.0.2" + +"cache-manager@<=5", "cache-manager@3.4.3": + "integrity" "sha512-6+Hfzy1SNs/thUwo+07pV0ozgxc4sadrAN0eFVGvXl/X9nz3J0BqEnnEoyxEn8jnF+UkEo0MKpyk9BO80hMeiQ==" + "resolved" "https://registry.npmjs.org/cache-manager/-/cache-manager-3.4.3.tgz" + "version" "3.4.3" + dependencies: + "async" "3.2.0" + "lodash" "^4.17.21" + "lru-cache" "6.0.0" + +"cacheable-lookup@^5.0.3": + "integrity" "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" + "version" "5.0.4" + +"cacheable-request@^7.0.2": + "integrity" "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==" + "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz" + "version" "7.0.4" + dependencies: + "clone-response" "^1.0.2" + "get-stream" "^5.1.0" + "http-cache-semantics" "^4.0.0" + "keyv" "^4.0.0" + "lowercase-keys" "^2.0.0" + "normalize-url" "^6.0.1" + "responselike" "^2.0.0" + +"cachedir@^2.3.0": + "integrity" "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==" + "resolved" "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz" + "version" "2.4.0" + +"call-bind@^1.0.2", "call-bind@^1.0.5", "call-bind@^1.0.6", "call-bind@^1.0.7": + "integrity" "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==" + "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "es-define-property" "^1.0.0" + "es-errors" "^1.3.0" + "function-bind" "^1.1.2" + "get-intrinsic" "^1.2.4" + "set-function-length" "^1.2.1" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camel-case@^4.1.2": + "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" + "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "pascal-case" "^3.1.2" + "tslib" "^2.0.3" + +"camelcase@^5.3.1": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"camelcase@^6.2.0": + "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + "version" "6.3.0" + +"caniuse-api@^3.0.0": + "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" + "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "browserslist" "^4.0.0" + "caniuse-lite" "^1.0.0" + "lodash.memoize" "^4.1.2" + "lodash.uniq" "^4.5.0" + +"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001599", "caniuse-lite@^1.0.30001646": + "integrity" "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz" + "version" "1.0.30001653" + +"case-sensitive-paths-webpack-plugin@^2.4.0": + "integrity" "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" + "resolved" "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" + "version" "2.4.0" + +"caseless@~0.12.0": + "integrity" "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + "version" "0.12.0" + +"chalk@^1.0.0", "chalk@^1.1.3": + "integrity" "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + "version" "1.1.3" + dependencies: + "ansi-styles" "^2.2.1" + "escape-string-regexp" "^1.0.2" + "has-ansi" "^2.0.0" + "strip-ansi" "^3.0.0" + "supports-color" "^2.0.0" + +"chalk@^2.3.0", "chalk@^2.4.1", "chalk@^2.4.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^4.0.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.0.2": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.1.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.1.2": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@3.0.0": + "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"char-regex@^1.0.2": + "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" + "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + "version" "1.0.2" + +"character-entities@^2.0.0": + "integrity" "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" + "resolved" "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz" + "version" "2.0.2" + +"chardet@^0.7.0": + "integrity" "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "resolved" "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + "version" "0.7.0" + +"chart.js@>=2.8.0", "chart.js@>=3.0.0", "chart.js@>=3.7.0", "chart.js@4.2.0": + "integrity" "sha512-wbtcV+QKeH0F7gQZaCJEIpsNriFheacouJQTVIjITi3eQA8bTlIBoknz0+dgV79aeKLNMAX+nDslIVE/nJ3rzA==" + "resolved" "https://registry.npmjs.org/chart.js/-/chart.js-4.2.0.tgz" + "version" "4.2.0" dependencies: "@kurkle/color" "^0.3.0" -chartjs-adapter-date-fns@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-3.0.0.tgz#c25f63c7f317c1f96f9a7c44bd45eeedb8a478e5" - integrity sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg== - -chartjs-plugin-annotation@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/chartjs-plugin-annotation/-/chartjs-plugin-annotation-2.1.2.tgz#8c307c931fda735a1acf1b606ad0e3fd7d96299b" - integrity sha512-kmEp2WtpogwnKKnDPO3iO3mVwvVGtmG5BkZVtAEZm5YzJ9CYxojjYEgk7OTrFbJ5vU098b84UeJRe8kRfNcq5g== - -chartjs-plugin-datalabels@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.2.0.tgz#369578e131d743c2e34b5fbe2d3f9335f6639b8f" - integrity sha512-14ZU30lH7n89oq+A4bWaJPnAG8a7ZTk7dKf48YAzMvJjQtjrgg5Dpk9f+LbjCF6bpx3RAGTeL13IXpKQYyRvlw== - -check-more-types@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" - integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== - -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" - 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" - -cheerio@1.0.0-rc.12: - version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" - 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" - -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.3, chokidar@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - 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" +"chartjs-adapter-date-fns@3.0.0": + "integrity" "sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==" + "resolved" "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-3.0.0.tgz" + "version" "3.0.0" + +"chartjs-chart-treemap@2.3.1": + "integrity" "sha512-GW+iODLICIJhNZtHbTtaOjCwRIxmXcquXRKDFMsrkXyqyDeSN1aiVfzNNj6Xjy55soopqRA+YfHqjT2S2zF7lQ==" + "resolved" "https://registry.npmjs.org/chartjs-chart-treemap/-/chartjs-chart-treemap-2.3.1.tgz" + "version" "2.3.1" + +"chartjs-plugin-annotation@2.1.2": + "integrity" "sha512-kmEp2WtpogwnKKnDPO3iO3mVwvVGtmG5BkZVtAEZm5YzJ9CYxojjYEgk7OTrFbJ5vU098b84UeJRe8kRfNcq5g==" + "resolved" "https://registry.npmjs.org/chartjs-plugin-annotation/-/chartjs-plugin-annotation-2.1.2.tgz" + "version" "2.1.2" + +"chartjs-plugin-datalabels@2.2.0": + "integrity" "sha512-14ZU30lH7n89oq+A4bWaJPnAG8a7ZTk7dKf48YAzMvJjQtjrgg5Dpk9f+LbjCF6bpx3RAGTeL13IXpKQYyRvlw==" + "resolved" "https://registry.npmjs.org/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.2.0.tgz" + "version" "2.2.0" + +"check-more-types@^2.24.0": + "integrity" "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==" + "resolved" "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz" + "version" "2.24.0" + +"cheerio-select@^2.1.0": + "integrity" "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==" + "resolved" "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" + "version" "2.1.0" + 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" + +"cheerio@1.0.0-rc.12": + "integrity" "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==" + "resolved" "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" + "version" "1.0.0-rc.12" + 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" + +"chokidar@^3.0.0", "chokidar@^3.5.2", "chokidar@^3.5.3", "chokidar@^3.6.0", "chokidar@>=3.0.0 <4.0.0": + "integrity" "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" + "version" "3.6.0" + 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" optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -citty@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.6.tgz#0f7904da1ed4625e1a9ea7e0fa780981aab7c5e4" - integrity sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ== - dependencies: - consola "^3.2.3" - -cjs-module-lexer@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" - integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== - -class-transformer@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336" - integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== - -class-validator@0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.14.1.tgz#ff2411ed8134e9d76acfeb14872884448be98110" - integrity sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ== + "fsevents" "~2.3.2" + +"chownr@^2.0.0": + "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + "version" "2.0.0" + +"chrome-trace-event@^1.0.2": + "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + "version" "1.0.3" + +"ci-info@^2.0.0": + "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + "version" "2.0.0" + +"ci-info@^3.2.0": + "integrity" "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" + "version" "3.9.0" + +"citty@^0.1.6": + "integrity" "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==" + "resolved" "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz" + "version" "0.1.6" + dependencies: + "consola" "^3.2.3" + +"cjs-module-lexer@^1.0.0", "cjs-module-lexer@^1.2.3": + "integrity" "sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g==" + "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.0.tgz" + "version" "1.4.0" + +"class-transformer@*", "class-transformer@0.5.1": + "integrity" "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + "resolved" "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz" + "version" "0.5.1" + +"class-validator@*", "class-validator@0.14.1": + "integrity" "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==" + "resolved" "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz" + "version" "0.14.1" dependencies: "@types/validator" "^13.11.8" - libphonenumber-js "^1.10.53" - validator "^13.9.0" + "libphonenumber-js" "^1.10.53" + "validator" "^13.9.0" -clean-css@^5.2.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" - integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== +"clean-css@^5.2.2": + "integrity" "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==" + "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz" + "version" "5.3.3" dependencies: - source-map "~0.6.0" + "source-map" "~0.6.0" + +"clean-stack@^2.0.0": + "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + "version" "2.2.0" -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +"cli-cursor@^1.0.2": + "integrity" "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "restore-cursor" "^1.0.1" -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +"cli-cursor@^2.0.0": + "integrity" "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "restore-cursor" "^2.0.0" -cli-cursor@3.1.0, cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== +"cli-cursor@^2.1.0": + "integrity" "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" + "version" "2.1.0" dependencies: - restore-cursor "^3.1.0" + "restore-cursor" "^2.0.0" -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A== +"cli-cursor@^3.1.0", "cli-cursor@3.1.0": + "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + "version" "3.1.0" dependencies: - restore-cursor "^1.0.1" + "restore-cursor" "^3.1.0" -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== +"cli-cursor@^5.0.0": + "integrity" "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz" + "version" "5.0.0" dependencies: - restore-cursor "^2.0.0" + "restore-cursor" "^5.0.0" -cli-spinners@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== +"cli-spinners@^2.5.0", "cli-spinners@^2.9.2": + "integrity" "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==" + "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" + "version" "2.9.2" -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== +"cli-spinners@2.6.1": + "integrity" "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" + "version" "2.6.1" -cli-table3@^0.6.1, cli-table3@~0.6.0: - version "0.6.4" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.4.tgz#d1c536b8a3f2e7bec58f67ac9e5769b1b30088b0" - integrity sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw== +"cli-table3@~0.6.0": + "integrity" "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==" + "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz" + "version" "0.6.4" dependencies: - string-width "^4.2.0" + "string-width" "^4.2.0" optionalDependencies: "@colors/colors" "1.5.0" -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg== - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -cli-width@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" - integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== - -clipboard@^2.0.11: - version "2.0.11" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5" - integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw== - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-response@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" - integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== - dependencies: - mimic-response "^1.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -cluster-key-slot@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" - integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -codelyzer@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-6.0.1.tgz#c0e9668e847255b37c759e68fb2700b11e277d0f" - integrity sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g== +"cli-truncate@^0.2.1": + "integrity" "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz" + "version" "0.2.1" + dependencies: + "slice-ansi" "0.0.4" + "string-width" "^1.0.1" + +"cli-truncate@^4.0.0": + "integrity" "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "slice-ansi" "^5.0.0" + "string-width" "^7.0.0" + +"cli-width@^4.1.0": + "integrity" "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==" + "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" + "version" "4.1.0" + +"clipboard@^2.0.11": + "integrity" "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==" + "resolved" "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz" + "version" "2.0.11" + dependencies: + "good-listener" "^1.2.2" + "select" "^1.1.2" + "tiny-emitter" "^2.0.0" + +"cliui@^8.0.1": + "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + "version" "8.0.1" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.1" + "wrap-ansi" "^7.0.0" + +"clone-deep@^4.0.1": + "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" + "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "is-plain-object" "^2.0.4" + "kind-of" "^6.0.2" + "shallow-clone" "^3.0.0" + +"clone-response@^1.0.2": + "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" + "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "mimic-response" "^1.0.0" + +"clone@^1.0.2": + "integrity" "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + "version" "1.0.4" + +"cluster-key-slot@^1.1.0": + "integrity" "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" + "resolved" "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz" + "version" "1.1.2" + +"co@^4.6.0": + "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" + "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + "version" "4.6.0" + +"code-point-at@^1.0.0": + "integrity" "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" + "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + "version" "1.1.0" + +"codelyzer@6.0.1": + "integrity" "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==" + "resolved" "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz" + "version" "6.0.1" dependencies: "@angular/compiler" "9.0.0" "@angular/core" "9.0.0" - app-root-path "^3.0.0" - aria-query "^3.0.0" - axobject-query "2.0.2" - css-selector-tokenizer "^0.7.1" - cssauron "^1.4.0" - damerau-levenshtein "^1.0.4" - rxjs "^6.5.3" - semver-dsl "^1.0.1" - source-map "^0.5.7" - sprintf-js "^1.1.2" - tslib "^1.10.0" - zone.js "~0.10.3" - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" - integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== - dependencies: - color-convert "^2.0.1" - color-string "^1.9.0" - -colord@^2.9.3: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^2.0.10: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -columnify@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@7, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^2.11.0, commander@^2.15.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" - integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -comment-json@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.3.tgz#50b487ebbf43abe44431f575ebda07d30d015365" - integrity sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw== - dependencies: - array-timsort "^1.0.3" - core-util-is "^1.0.3" - esprima "^4.0.1" - has-own-prop "^2.0.0" - repeat-string "^1.6.1" - -common-path-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" - integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== - -common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - 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" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.5.2, concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -confusing-browser-globals@^1.0.9: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - -connect-history-api-fallback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" - integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== - -consola@^2.15.0: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -consola@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" - integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^1.5.1, convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - -copy-anything@^2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" - integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== - dependencies: - is-what "^3.14.1" - -copy-webpack-plugin@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" - 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" - -copy-webpack-plugin@^10.2.4: - version "10.2.4" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" - integrity sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== - dependencies: - fast-glob "^3.2.7" - glob-parent "^6.0.1" - globby "^12.0.2" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - -core-js-compat@^3.25.1, core-js-compat@^3.31.0, core-js-compat@^3.34.0, core-js-compat@^3.36.1: - version "3.37.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" - integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== - dependencies: - browserslist "^4.23.0" - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@^1.0.3, core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -corser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" - integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== - -cose-base@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a" - integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== - dependencies: - layout-base "^1.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + "app-root-path" "^3.0.0" + "aria-query" "^3.0.0" + "axobject-query" "2.0.2" + "css-selector-tokenizer" "^0.7.1" + "cssauron" "^1.4.0" + "damerau-levenshtein" "^1.0.4" + "rxjs" "^6.5.3" + "semver-dsl" "^1.0.1" + "source-map" "^0.5.7" + "sprintf-js" "^1.1.2" + "tslib" "^1.10.0" + "zone.js" "~0.10.3" + +"collect-v8-coverage@^1.0.0": + "integrity" "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" + "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + "version" "1.0.2" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@^1.0.0", "color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"color-string@^1.9.0": + "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==" + "resolved" "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "color-name" "^1.0.0" + "simple-swizzle" "^0.2.2" + +"color@4.2.3": + "integrity" "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==" + "resolved" "https://registry.npmjs.org/color/-/color-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "color-convert" "^2.0.1" + "color-string" "^1.9.0" + +"colord@^2.9.3": + "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + "version" "2.9.3" + +"colorette@^2.0.10", "colorette@^2.0.20": + "integrity" "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + "version" "2.0.20" + +"columnify@^1.6.0": + "integrity" "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==" + "resolved" "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz" + "version" "1.6.0" + dependencies: + "strip-ansi" "^6.0.1" + "wcwidth" "^1.0.0" + +"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "delayed-stream" "~1.0.0" + +"commander@^2.11.0", "commander@^2.12.1", "commander@^2.15.0", "commander@^2.20.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^5.1.0": + "integrity" "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + "resolved" "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" + "version" "5.1.0" + +"commander@^6.2.1": + "integrity" "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + "resolved" "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" + "version" "6.2.1" + +"commander@^7.2.0": + "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + "version" "7.2.0" + +"commander@^8.3.0": + "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + "version" "8.3.0" + +"commander@7": + "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + "version" "7.2.0" + +"comment-json@4.2.3": + "integrity" "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==" + "resolved" "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "array-timsort" "^1.0.3" + "core-util-is" "^1.0.3" + "esprima" "^4.0.1" + "has-own-prop" "^2.0.0" + "repeat-string" "^1.6.1" + +"common-path-prefix@^3.0.0": + "integrity" "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + "resolved" "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" + "version" "3.0.0" + +"common-tags@^1.8.0": + "integrity" "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" + "resolved" "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" + "version" "1.8.2" + +"commondir@^1.0.1": + "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + "version" "1.0.1" + +"compressible@~2.0.16": + "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" + "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + "version" "2.0.18" + dependencies: + "mime-db" ">= 1.43.0 < 2" + +"compression@^1.7.4": + "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" + "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + "version" "1.7.4" + 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" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"concat-stream@^1.5.2", "concat-stream@^1.6.2": + "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" + "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + "version" "1.6.2" + dependencies: + "buffer-from" "^1.0.0" + "inherits" "^2.0.3" + "readable-stream" "^2.2.2" + "typedarray" "^0.0.6" + +"confusing-browser-globals@^1.0.9": + "integrity" "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" + "version" "1.0.11" + +"connect-history-api-fallback@^2.0.0": + "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" + "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + "version" "2.0.0" + +"consola@^2.15.0": + "integrity" "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + "resolved" "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" + "version" "2.15.3" + +"consola@^3.2.3": + "integrity" "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==" + "resolved" "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz" + "version" "3.2.3" + +"constants-browserify@^1.0.0": + "integrity" "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + "version" "1.0.0" + +"content-disposition@~0.5.2", "content-disposition@0.5.4": + "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + "version" "0.5.4" + dependencies: + "safe-buffer" "5.2.1" + +"content-type@^1.0.4", "content-type@~1.0.4", "content-type@~1.0.5": + "integrity" "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + "version" "1.0.5" + +"convert-source-map@^1.5.1", "convert-source-map@^1.7.0": + "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + "version" "1.9.0" + +"convert-source-map@^2.0.0": + "integrity" "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + "version" "2.0.0" + +"cookie-signature@1.0.6": + "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "version" "1.0.6" + +"cookie@0.5.0": + "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + "version" "0.5.0" + +"cookie@0.6.0": + "integrity" "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" + "version" "0.6.0" + +"cookies@~0.8.0": + "integrity" "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==" + "resolved" "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz" + "version" "0.8.0" + dependencies: + "depd" "~2.0.0" + "keygrip" "~1.1.0" + +"copy-anything@^2.0.1": + "integrity" "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==" + "resolved" "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "is-what" "^3.14.1" + +"copy-webpack-plugin@^10.2.4": + "integrity" "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==" + "resolved" "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz" + "version" "10.2.4" + dependencies: + "fast-glob" "^3.2.7" + "glob-parent" "^6.0.1" + "globby" "^12.0.2" + "normalize-path" "^3.0.0" + "schema-utils" "^4.0.0" + "serialize-javascript" "^6.0.0" + +"copy-webpack-plugin@12.0.2": + "integrity" "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==" + "resolved" "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz" + "version" "12.0.2" + dependencies: + "fast-glob" "^3.3.2" + "glob-parent" "^6.0.1" + "globby" "^14.0.0" + "normalize-path" "^3.0.0" + "schema-utils" "^4.2.0" + "serialize-javascript" "^6.0.2" + +"core-js-compat@^3.31.0", "core-js-compat@^3.36.1": + "integrity" "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==" + "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz" + "version" "3.37.0" + dependencies: + "browserslist" "^4.23.0" + +"core-util-is@^1.0.3", "core-util-is@~1.0.0": + "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + "version" "1.0.3" + +"core-util-is@1.0.2": + "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "version" "1.0.2" + +"cors@2.8.5": + "integrity" "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==" + "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + "version" "2.8.5" + dependencies: + "object-assign" "^4" + "vary" "^1" + +"corser@^2.0.1": + "integrity" "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==" + "resolved" "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz" + "version" "2.0.1" + +"cose-base@^1.0.0": + "integrity" "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==" + "resolved" "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "layout-base" "^1.0.0" + +"cosmiconfig@^6.0.0": + "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + "version" "6.0.0" + 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" + +"cosmiconfig@^7.0.0": + "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + "version" "7.1.0" 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" + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== +"cosmiconfig@^7.0.1": + "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + "version" "7.1.0" 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" - -cosmiconfig@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" - integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== - dependencies: - env-paths "^2.2.1" - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - -countries-and-timezones@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/countries-and-timezones/-/countries-and-timezones-3.4.1.tgz#0ec2540f57e42f0f740eb2acaede786043347fe1" - integrity sha512-INeHGCony4XUUR8iGL/lmt9s1Oi+n+gFHeJAMfbV5hJfYeDOB8JG1oxz5xFQu5oBZoRCJe/87k1Vzue9DoIauA== - -countries-list@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/countries-list/-/countries-list-3.1.0.tgz#1cbe32f58659c7d6a1e744917689f24c84333ea8" - integrity sha512-HpTBLZba1VPTZSjUnUwR7SykxV7Z/7/+ZM5x5wi5tO99Qvom6bE2SC+AQ18016ujg3jSlYBbMITrHNnPAHSM9Q== - -countup.js@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/countup.js/-/countup.js-2.8.0.tgz#64951f2df3ede28839413d654d8fef28251c32a8" - integrity sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ== - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" + +"cosmiconfig@^9.0.0": + "integrity" "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz" + "version" "9.0.0" + dependencies: + "env-paths" "^2.2.1" + "import-fresh" "^3.3.0" + "js-yaml" "^4.1.0" + "parse-json" "^5.2.0" + +"countries-and-timezones@3.4.1": + "integrity" "sha512-INeHGCony4XUUR8iGL/lmt9s1Oi+n+gFHeJAMfbV5hJfYeDOB8JG1oxz5xFQu5oBZoRCJe/87k1Vzue9DoIauA==" + "resolved" "https://registry.npmjs.org/countries-and-timezones/-/countries-and-timezones-3.4.1.tgz" + "version" "3.4.1" + +"countries-list@3.1.0": + "integrity" "sha512-HpTBLZba1VPTZSjUnUwR7SykxV7Z/7/+ZM5x5wi5tO99Qvom6bE2SC+AQ18016ujg3jSlYBbMITrHNnPAHSM9Q==" + "resolved" "https://registry.npmjs.org/countries-list/-/countries-list-3.1.0.tgz" + "version" "3.1.0" + +"countup.js@2.8.0": + "integrity" "sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ==" + "resolved" "https://registry.npmjs.org/countup.js/-/countup.js-2.8.0.tgz" + "version" "2.8.0" + +"create-jest@^29.7.0": + "integrity" "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==" + "resolved" "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -critters@0.0.22: - version "0.0.22" - resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.22.tgz#ce76b1cbc70078c89d23725646357e3850236dae" - integrity sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw== - dependencies: - chalk "^4.1.0" - css-select "^5.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.2" - htmlparser2 "^8.0.2" - postcss "^8.4.23" - postcss-media-query-parser "^0.2.3" - -cron-parser@^4.2.1: - version "4.9.0" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.9.0.tgz#0340694af3e46a0894978c6f52a6dbb5c0f11ad5" - integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== - dependencies: - luxon "^3.2.1" - -cron@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/cron/-/cron-2.4.0.tgz#bdb2fcf896c072ba9dbc2f932ccd6daf3ad243b5" - integrity sha512-Cx77ic1TyIAtUggr0oAhtS8MLzPBUqGNIvdDM7jE3oFIxfe8LXWI9q3iQN/H2CebAiMir53LQKWOhEKnzkJTAQ== - dependencies: - luxon "^3.2.1" - -cross-fetch@^3.0.5: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== - dependencies: - node-fetch "^2.6.12" - -cross-fetch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" - integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== - dependencies: - node-fetch "^2.6.12" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-declaration-sorter@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" - integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== - -css-loader@6.10.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" - integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.33" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.4" - postcss-modules-scope "^3.1.1" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.5.4" - -css-loader@^6.4.0, css-loader@^6.7.1: - version "6.11.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" - integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.33" - postcss-modules-extract-imports "^3.1.0" - postcss-modules-local-by-default "^4.0.5" - postcss-modules-scope "^3.2.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.5.4" - -css-minimizer-webpack-plugin@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" - integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== + "chalk" "^4.0.0" + "exit" "^0.1.2" + "graceful-fs" "^4.2.9" + "jest-config" "^29.7.0" + "jest-util" "^29.7.0" + "prompts" "^2.0.1" + +"create-require@^1.1.0": + "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + "version" "1.1.1" + +"critters@0.0.24": + "integrity" "sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==" + "resolved" "https://registry.npmjs.org/critters/-/critters-0.0.24.tgz" + "version" "0.0.24" + dependencies: + "chalk" "^4.1.0" + "css-select" "^5.1.0" + "dom-serializer" "^2.0.0" + "domhandler" "^5.0.2" + "htmlparser2" "^8.0.2" + "postcss" "^8.4.23" + "postcss-media-query-parser" "^0.2.3" + +"cron-parser@^4.2.0", "cron-parser@^4.2.1": + "integrity" "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==" + "resolved" "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz" + "version" "4.9.0" + dependencies: + "luxon" "^3.2.1" + +"cron@2.4.0": + "integrity" "sha512-Cx77ic1TyIAtUggr0oAhtS8MLzPBUqGNIvdDM7jE3oFIxfe8LXWI9q3iQN/H2CebAiMir53LQKWOhEKnzkJTAQ==" + "resolved" "https://registry.npmjs.org/cron/-/cron-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "luxon" "^3.2.1" + +"cross-fetch@^3.0.5": + "integrity" "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz" + "version" "3.1.8" + dependencies: + "node-fetch" "^2.6.12" + +"cross-fetch@^4.0.0": + "integrity" "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "node-fetch" "^2.6.12" + +"cross-spawn@^7.0.0", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"crypto-random-string@^4.0.0": + "integrity" "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==" + "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "type-fest" "^1.0.1" + +"css-declaration-sorter@^7.2.0": + "integrity" "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==" + "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz" + "version" "7.2.0" + +"css-loader@^6.4.0": + "integrity" "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==" + "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz" + "version" "6.11.0" + dependencies: + "icss-utils" "^5.1.0" + "postcss" "^8.4.33" + "postcss-modules-extract-imports" "^3.1.0" + "postcss-modules-local-by-default" "^4.0.5" + "postcss-modules-scope" "^3.2.0" + "postcss-modules-values" "^4.0.0" + "postcss-value-parser" "^4.2.0" + "semver" "^7.5.4" + +"css-loader@^6.7.1": + "integrity" "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==" + "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz" + "version" "6.11.0" + dependencies: + "icss-utils" "^5.1.0" + "postcss" "^8.4.33" + "postcss-modules-extract-imports" "^3.1.0" + "postcss-modules-local-by-default" "^4.0.5" + "postcss-modules-scope" "^3.2.0" + "postcss-modules-values" "^4.0.0" + "postcss-value-parser" "^4.2.0" + "semver" "^7.5.4" + +"css-loader@7.1.2": + "integrity" "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==" + "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz" + "version" "7.1.2" + dependencies: + "icss-utils" "^5.1.0" + "postcss" "^8.4.33" + "postcss-modules-extract-imports" "^3.1.0" + "postcss-modules-local-by-default" "^4.0.5" + "postcss-modules-scope" "^3.2.0" + "postcss-modules-values" "^4.0.0" + "postcss-value-parser" "^4.2.0" + "semver" "^7.5.4" + +"css-minimizer-webpack-plugin@^5.0.0": + "integrity" "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==" + "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz" + "version" "5.0.1" dependencies: "@jridgewell/trace-mapping" "^0.3.18" - cssnano "^6.0.1" - jest-worker "^29.4.3" - postcss "^8.4.24" - schema-utils "^4.0.1" - serialize-javascript "^6.0.1" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - 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" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - 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" - -css-selector-tokenizer@^0.7.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" - integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== - dependencies: - cssesc "^3.0.0" - fastparse "^1.1.2" - -css-tree@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" - integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - dependencies: - mdn-data "2.0.30" - source-map-js "^1.0.1" - -css-tree@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" - integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== - dependencies: - mdn-data "2.0.28" - source-map-js "^1.0.1" - -css-what@^6.0.1, css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -cssauron@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" - integrity sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw== - dependencies: - through X.X.X - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e" - integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== - dependencies: - browserslist "^4.23.0" - css-declaration-sorter "^7.2.0" - cssnano-utils "^4.0.2" - postcss-calc "^9.0.1" - postcss-colormin "^6.1.0" - postcss-convert-values "^6.1.0" - postcss-discard-comments "^6.0.2" - postcss-discard-duplicates "^6.0.3" - postcss-discard-empty "^6.0.3" - postcss-discard-overridden "^6.0.2" - postcss-merge-longhand "^6.0.5" - postcss-merge-rules "^6.1.1" - postcss-minify-font-values "^6.1.0" - postcss-minify-gradients "^6.0.3" - postcss-minify-params "^6.1.0" - postcss-minify-selectors "^6.0.4" - postcss-normalize-charset "^6.0.2" - postcss-normalize-display-values "^6.0.2" - postcss-normalize-positions "^6.0.2" - postcss-normalize-repeat-style "^6.0.2" - postcss-normalize-string "^6.0.2" - postcss-normalize-timing-functions "^6.0.2" - postcss-normalize-unicode "^6.1.0" - postcss-normalize-url "^6.0.2" - postcss-normalize-whitespace "^6.0.2" - postcss-ordered-values "^6.0.2" - postcss-reduce-initial "^6.1.0" - postcss-reduce-transforms "^6.0.2" - postcss-svgo "^6.0.3" - postcss-unique-selectors "^6.0.4" - -cssnano-utils@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c" - integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== - -cssnano@^6.0.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8" - integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== - dependencies: - cssnano-preset-default "^6.1.2" - lilconfig "^3.1.1" - -csso@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" - integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== - dependencies: - css-tree "~2.2.0" - -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^3.0.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -cypress@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-6.2.1.tgz#27d5fbcf008c698c390fdb0c03441804176d06c4" - integrity sha512-OYkSgzA4J4Q7eMjZvNf5qWpBLR4RXrkqjL3UZ1UzGGLAskO0nFTi/RomNTG6TKvL3Zp4tw4zFY1gp5MtmkCZrA== + "cssnano" "^6.0.1" + "jest-worker" "^29.4.3" + "postcss" "^8.4.24" + "schema-utils" "^4.0.1" + "serialize-javascript" "^6.0.1" + +"css-select@^4.1.3": + "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.0.1" + "domhandler" "^4.3.1" + "domutils" "^2.8.0" + "nth-check" "^2.0.1" + +"css-select@^5.1.0": + "integrity" "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" + "resolved" "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.1.0" + "domhandler" "^5.0.2" + "domutils" "^3.0.1" + "nth-check" "^2.0.1" + +"css-selector-tokenizer@^0.7.1": + "integrity" "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==" + "resolved" "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz" + "version" "0.7.3" + dependencies: + "cssesc" "^3.0.0" + "fastparse" "^1.1.2" + +"css-tree@^2.3.1": + "integrity" "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==" + "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" + "version" "2.3.1" + dependencies: + "mdn-data" "2.0.30" + "source-map-js" "^1.0.1" + +"css-tree@~2.2.0": + "integrity" "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==" + "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" + "version" "2.2.1" + dependencies: + "mdn-data" "2.0.28" + "source-map-js" "^1.0.1" + +"css-what@^6.0.1", "css-what@^6.1.0": + "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + "version" "6.1.0" + +"cssauron@^1.4.0": + "integrity" "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==" + "resolved" "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "through" "X.X.X" + +"cssesc@^3.0.0": + "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + "version" "3.0.0" + +"cssnano-preset-default@^6.1.2": + "integrity" "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==" + "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz" + "version" "6.1.2" + dependencies: + "browserslist" "^4.23.0" + "css-declaration-sorter" "^7.2.0" + "cssnano-utils" "^4.0.2" + "postcss-calc" "^9.0.1" + "postcss-colormin" "^6.1.0" + "postcss-convert-values" "^6.1.0" + "postcss-discard-comments" "^6.0.2" + "postcss-discard-duplicates" "^6.0.3" + "postcss-discard-empty" "^6.0.3" + "postcss-discard-overridden" "^6.0.2" + "postcss-merge-longhand" "^6.0.5" + "postcss-merge-rules" "^6.1.1" + "postcss-minify-font-values" "^6.1.0" + "postcss-minify-gradients" "^6.0.3" + "postcss-minify-params" "^6.1.0" + "postcss-minify-selectors" "^6.0.4" + "postcss-normalize-charset" "^6.0.2" + "postcss-normalize-display-values" "^6.0.2" + "postcss-normalize-positions" "^6.0.2" + "postcss-normalize-repeat-style" "^6.0.2" + "postcss-normalize-string" "^6.0.2" + "postcss-normalize-timing-functions" "^6.0.2" + "postcss-normalize-unicode" "^6.1.0" + "postcss-normalize-url" "^6.0.2" + "postcss-normalize-whitespace" "^6.0.2" + "postcss-ordered-values" "^6.0.2" + "postcss-reduce-initial" "^6.1.0" + "postcss-reduce-transforms" "^6.0.2" + "postcss-svgo" "^6.0.3" + "postcss-unique-selectors" "^6.0.4" + +"cssnano-utils@^4.0.2": + "integrity" "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==" + "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz" + "version" "4.0.2" + +"cssnano@^6.0.1": + "integrity" "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==" + "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz" + "version" "6.1.2" + dependencies: + "cssnano-preset-default" "^6.1.2" + "lilconfig" "^3.1.1" + +"csso@^5.0.5": + "integrity" "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==" + "resolved" "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" + "version" "5.0.5" + dependencies: + "css-tree" "~2.2.0" + +"cssom@^0.5.0": + "integrity" "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" + "version" "0.5.0" + +"cssom@~0.3.6": + "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + "version" "0.3.8" + +"cssstyle@^2.3.0": + "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" + "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "cssom" "~0.3.6" + +"csstype@^3.0.2": + "integrity" "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" + "version" "3.1.3" + +"cypress@>= 3 < 14", "cypress@6.2.1": + "integrity" "sha512-OYkSgzA4J4Q7eMjZvNf5qWpBLR4RXrkqjL3UZ1UzGGLAskO0nFTi/RomNTG6TKvL3Zp4tw4zFY1gp5MtmkCZrA==" + "resolved" "https://registry.npmjs.org/cypress/-/cypress-6.2.1.tgz" + "version" "6.2.1" dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" "@types/sinonjs__fake-timers" "^6.0.1" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" - bluebird "^3.7.2" - cachedir "^2.3.0" - chalk "^4.1.0" - check-more-types "^2.24.0" - cli-table3 "~0.6.0" - commander "^5.1.0" - common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" - executable "^4.1.1" - extract-zip "^1.7.0" - fs-extra "^9.0.1" - getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" - lazy-ass "^1.6.0" - listr "^0.14.3" - lodash "^4.17.19" - log-symbols "^4.0.0" - minimist "^1.2.5" - moment "^2.27.0" - ospath "^1.2.2" - pretty-bytes "^5.4.1" - ramda "~0.26.1" - request-progress "^3.0.0" - supports-color "^7.2.0" - tmp "~0.2.1" - untildify "^4.0.0" - url "^0.11.0" - yauzl "^2.10.0" - -cytoscape-cose-bilkent@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b" - integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== - dependencies: - cose-base "^1.0.0" - -cytoscape@^3.28.1: - version "3.29.2" - resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.29.2.tgz#c99f42513c80a75e2e94858add32896c860202ac" - integrity sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ== + "arch" "^2.1.2" + "blob-util" "2.0.2" + "bluebird" "^3.7.2" + "cachedir" "^2.3.0" + "chalk" "^4.1.0" + "check-more-types" "^2.24.0" + "cli-table3" "~0.6.0" + "commander" "^5.1.0" + "common-tags" "^1.8.0" + "debug" "^4.1.1" + "eventemitter2" "^6.4.2" + "execa" "^4.0.2" + "executable" "^4.1.1" + "extract-zip" "^1.7.0" + "fs-extra" "^9.0.1" + "getos" "^3.2.1" + "is-ci" "^2.0.0" + "is-installed-globally" "^0.3.2" + "lazy-ass" "^1.6.0" + "listr" "^0.14.3" + "lodash" "^4.17.19" + "log-symbols" "^4.0.0" + "minimist" "^1.2.5" + "moment" "^2.27.0" + "ospath" "^1.2.2" + "pretty-bytes" "^5.4.1" + "ramda" "~0.26.1" + "request-progress" "^3.0.0" + "supports-color" "^7.2.0" + "tmp" "~0.2.1" + "untildify" "^4.0.0" + "url" "^0.11.0" + "yauzl" "^2.10.0" + +"cytoscape-cose-bilkent@^4.1.0": + "integrity" "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==" + "resolved" "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "cose-base" "^1.0.0" + +"cytoscape@^3.2.0", "cytoscape@^3.28.1": + "integrity" "sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ==" + "resolved" "https://registry.npmjs.org/cytoscape/-/cytoscape-3.29.2.tgz" + "version" "3.29.2" + +"d3-array@^3.2.0", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", "d3-array@3": + "integrity" "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==" + "resolved" "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" + "version" "3.2.4" + dependencies: + "internmap" "1 - 2" "d3-array@1 - 2": - version "2.12.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" - integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== - dependencies: - internmap "^1.0.0" - -"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" - integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + "integrity" "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==" + "resolved" "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz" + "version" "2.12.1" + dependencies: + "internmap" "^1.0.0" + +"d3-axis@3": + "integrity" "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + "resolved" "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" + "version" "3.0.0" + +"d3-brush@3": + "integrity" "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==" + "resolved" "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "d3-dispatch" "1 - 3" + "d3-drag" "2 - 3" + "d3-interpolate" "1 - 3" + "d3-selection" "3" + "d3-transition" "3" + +"d3-chord@3": + "integrity" "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==" + "resolved" "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "d3-path" "1 - 3" + +"d3-color@1 - 3", "d3-color@3": + "integrity" "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + "resolved" "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" + "version" "3.1.0" + +"d3-contour@4": + "integrity" "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==" + "resolved" "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "d3-array" "^3.2.0" + +"d3-delaunay@6": + "integrity" "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==" + "resolved" "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz" + "version" "6.0.4" + dependencies: + "delaunator" "5" + +"d3-dispatch@1 - 3", "d3-dispatch@3": + "integrity" "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + "resolved" "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" + "version" "3.0.1" + +"d3-drag@2 - 3", "d3-drag@3": + "integrity" "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==" + "resolved" "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "d3-dispatch" "1 - 3" + "d3-selection" "3" + +"d3-dsv@1 - 3", "d3-dsv@3": + "integrity" "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==" + "resolved" "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "commander" "7" + "iconv-lite" "0.6" + "rw" "1" + +"d3-ease@1 - 3", "d3-ease@3": + "integrity" "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + "resolved" "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" + "version" "3.0.1" + +"d3-fetch@3": + "integrity" "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==" + "resolved" "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "d3-dsv" "1 - 3" + +"d3-force@3": + "integrity" "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==" + "resolved" "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "d3-dispatch" "1 - 3" + "d3-quadtree" "1 - 3" + "d3-timer" "1 - 3" + +"d3-format@1 - 3", "d3-format@3": + "integrity" "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + "resolved" "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" + "version" "3.1.0" + +"d3-geo@3": + "integrity" "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==" + "resolved" "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "d3-array" "2.5.0 - 3" + +"d3-hierarchy@3": + "integrity" "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + "resolved" "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" + "version" "3.1.2" + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", "d3-interpolate@3": + "integrity" "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==" + "resolved" "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "d3-color" "1 - 3" + +"d3-path@^3.1.0", "d3-path@1 - 3", "d3-path@3": + "integrity" "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + "resolved" "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" + "version" "3.1.0" + +"d3-path@1": + "integrity" "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + "resolved" "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz" + "version" "1.0.9" + +"d3-polygon@3": + "integrity" "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + "resolved" "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" + "version" "3.0.1" + +"d3-quadtree@1 - 3", "d3-quadtree@3": + "integrity" "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + "resolved" "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz" + "version" "3.0.1" + +"d3-random@3": + "integrity" "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + "resolved" "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz" + "version" "3.0.1" + +"d3-sankey@^0.12.3": + "integrity" "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==" + "resolved" "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz" + "version" "0.12.3" + dependencies: + "d3-array" "1 - 2" + "d3-shape" "^1.2.0" + +"d3-scale-chromatic@3": + "integrity" "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==" + "resolved" "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "d3-color" "1 - 3" + "d3-interpolate" "1 - 3" + +"d3-scale@4": + "integrity" "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==" + "resolved" "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "d3-array" "2.10.0 - 3" + "d3-format" "1 - 3" + "d3-interpolate" "1.2.0 - 3" + "d3-time" "2.1.1 - 3" + "d3-time-format" "2 - 4" + +"d3-selection@2 - 3", "d3-selection@3": + "integrity" "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + "resolved" "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" + "version" "3.0.0" + +"d3-shape@^1.2.0": + "integrity" "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==" + "resolved" "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz" + "version" "1.3.7" + dependencies: + "d3-path" "1" + +"d3-shape@3": + "integrity" "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==" + "resolved" "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "d3-path" "^3.1.0" + +"d3-time-format@2 - 4", "d3-time-format@4": + "integrity" "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==" + "resolved" "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "d3-time" "1 - 3" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3", "d3-time@3": + "integrity" "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==" + "resolved" "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "d3-array" "2 - 3" + +"d3-timer@1 - 3", "d3-timer@3": + "integrity" "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + "resolved" "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" + "version" "3.0.1" + +"d3-transition@2 - 3", "d3-transition@3": + "integrity" "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==" + "resolved" "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "d3-color" "1 - 3" + "d3-dispatch" "1 - 3" + "d3-ease" "1 - 3" + "d3-interpolate" "1 - 3" + "d3-timer" "1 - 3" + +"d3-zoom@3": + "integrity" "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==" + "resolved" "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "d3-dispatch" "1 - 3" + "d3-drag" "2 - 3" + "d3-interpolate" "1 - 3" + "d3-selection" "2 - 3" + "d3-transition" "2 - 3" + +"d3@^7.4.0", "d3@^7.8.2": + "integrity" "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==" + "resolved" "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz" + "version" "7.9.0" + dependencies: + "d3-array" "3" + "d3-axis" "3" + "d3-brush" "3" + "d3-chord" "3" + "d3-color" "3" + "d3-contour" "4" + "d3-delaunay" "6" + "d3-dispatch" "3" + "d3-drag" "3" + "d3-dsv" "3" + "d3-ease" "3" + "d3-fetch" "3" + "d3-force" "3" + "d3-format" "3" + "d3-geo" "3" + "d3-hierarchy" "3" + "d3-interpolate" "3" + "d3-path" "3" + "d3-polygon" "3" + "d3-quadtree" "3" + "d3-random" "3" + "d3-scale" "4" + "d3-scale-chromatic" "3" + "d3-selection" "3" + "d3-shape" "3" + "d3-time" "3" + "d3-time-format" "4" + "d3-timer" "3" + "d3-transition" "3" + "d3-zoom" "3" + +"dagre-d3-es@7.0.10": + "integrity" "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==" + "resolved" "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz" + "version" "7.0.10" + dependencies: + "d3" "^7.8.2" + "lodash-es" "^4.17.21" + +"damerau-levenshtein@^1.0.4": + "integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" + "version" "1.0.8" + +"dashdash@^1.12.0": + "integrity" "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==" + "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + "version" "1.14.1" + dependencies: + "assert-plus" "^1.0.0" + +"data-urls@^3.0.2": + "integrity" "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==" + "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "abab" "^2.0.6" + "whatwg-mimetype" "^3.0.0" + "whatwg-url" "^11.0.0" + +"data-view-buffer@^1.0.1": + "integrity" "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==" + "resolved" "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "call-bind" "^1.0.6" + "es-errors" "^1.3.0" + "is-data-view" "^1.0.1" + +"data-view-byte-length@^1.0.1": + "integrity" "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==" + "resolved" "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "call-bind" "^1.0.7" + "es-errors" "^1.3.0" + "is-data-view" "^1.0.1" + +"data-view-byte-offset@^1.0.0": + "integrity" "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==" + "resolved" "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "call-bind" "^1.0.6" + "es-errors" "^1.3.0" + "is-data-view" "^1.0.1" + +"date-fns@^1.27.2": + "integrity" "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz" + "version" "1.30.1" + +"date-fns@>=2.0.0", "date-fns@3.6.0": + "integrity" "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==" + "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz" + "version" "3.6.0" + +"date-format@^4.0.14": + "integrity" "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==" + "resolved" "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz" + "version" "4.0.14" + +"dayjs@^1.11.7": + "integrity" "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz" + "version" "1.11.11" + +"debounce@^1.2.1": + "integrity" "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + "resolved" "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" + "version" "1.2.1" + +"debug@^2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debug@^3.1.0": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^3.2.7": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^4.0.0", "debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.4", "debug@4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@~3.1.0": + "integrity" "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "ms" "2.0.0" + +"debug@2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"debuglog@^1.0.0": + "integrity" "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==" + "resolved" "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" + "version" "1.0.1" + +"decimal.js@^10.4.2": + "integrity" "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" + "version" "10.4.3" + +"decode-named-character-reference@^1.0.0": + "integrity" "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==" + "resolved" "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "character-entities" "^2.0.0" + +"decompress-response@^6.0.0": + "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "mimic-response" "^3.1.0" + +"dedent@^1.0.0": + "integrity" "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==" + "resolved" "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz" + "version" "1.5.3" + +"deep-equal@~1.0.1": + "integrity" "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" + "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" + "version" "1.0.1" + +"deep-is@^0.1.3", "deep-is@~0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" + +"deepmerge@^4.2.2": + "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + "version" "4.3.1" + +"default-browser-id@^5.0.0": + "integrity" "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==" + "resolved" "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz" + "version" "5.0.0" + +"default-browser@^5.2.1": + "integrity" "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==" + "resolved" "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "bundle-name" "^4.1.0" + "default-browser-id" "^5.0.0" + +"default-gateway@^6.0.3": + "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" + "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "execa" "^5.0.0" + +"defaults@^1.0.3": + "integrity" "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==" + "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "clone" "^1.0.2" + +"defer-to-connect@^2.0.0": + "integrity" "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" + "version" "2.0.1" + +"define-data-property@^1.0.1", "define-data-property@^1.1.4": + "integrity" "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==" + "resolved" "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "es-define-property" "^1.0.0" + "es-errors" "^1.3.0" + "gopd" "^1.0.1" + +"define-lazy-prop@^2.0.0": + "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + "version" "2.0.0" + +"define-lazy-prop@^3.0.0": + "integrity" "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==" + "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" + "version" "3.0.0" + +"define-properties@^1.2.0", "define-properties@^1.2.1": + "integrity" "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "define-data-property" "^1.0.1" + "has-property-descriptors" "^1.0.0" + "object-keys" "^1.1.1" + +"defu@^6.1.4": + "integrity" "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" + "resolved" "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz" + "version" "6.1.4" + +"delaunator@5": + "integrity" "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==" + "resolved" "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "robust-predicates" "^3.0.2" + +"delayed-stream@~1.0.0": + "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "version" "1.0.0" + +"delegate@^3.1.2": + "integrity" "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + "resolved" "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz" + "version" "3.2.0" + +"delegates@^1.0.0": + "integrity" "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + "version" "1.0.0" + +"delimit-stream@0.1.0": + "integrity" "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==" + "resolved" "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz" + "version" "0.1.0" + +"denque@^1.5.0": + "integrity" "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" + "resolved" "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz" + "version" "1.5.1" + +"denque@^2.1.0": + "integrity" "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" + "resolved" "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + "version" "2.1.0" + +"depd@^1.1.2", "depd@~1.1.2": + "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + "version" "1.1.2" + +"depd@~2.0.0", "depd@2.0.0": + "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + "version" "2.0.0" + +"dequal@^2.0.0", "dequal@^2.0.2", "dequal@^2.0.3": + "integrity" "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + "resolved" "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" + "version" "2.0.3" + +"destroy@^1.0.4", "destroy@1.2.0": + "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + "version" "1.2.0" + +"detect-indent@^6.1.0": + "integrity" "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==" + "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz" + "version" "6.1.0" + +"detect-libc@^2.0.1": + "integrity" "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz" + "version" "2.0.3" + +"detect-newline@^3.0.0": + "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + "version" "3.1.0" + +"detect-node@^2.0.4": + "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + "version" "2.1.0" + +"detect-port@^1.5.1": + "integrity" "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==" + "resolved" "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz" + "version" "1.6.1" + dependencies: + "address" "^1.0.1" + "debug" "4" + +"diff-sequences@^29.6.3": + "integrity" "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==" + "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + "version" "29.6.3" + +"diff@^4.0.1": + "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + "version" "4.0.2" + +"diff@^5.0.0": + "integrity" "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz" + "version" "5.2.0" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"dns-packet@^5.2.2": + "integrity" "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==" + "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz" + "version" "5.6.1" dependencies: - internmap "1 - 2" - -d3-axis@3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" - integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== - -d3-brush@3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" - integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== + "@leichtgewicht/ip-codec" "^2.0.1" + +"doctrine@^2.1.0": + "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + "version" "2.1.0" dependencies: - d3-dispatch "1 - 3" - d3-drag "2 - 3" - d3-interpolate "1 - 3" - d3-selection "3" - d3-transition "3" - -d3-chord@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" - integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== - dependencies: - d3-path "1 - 3" - -"d3-color@1 - 3", d3-color@3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" - integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== - -d3-contour@4: - version "4.0.2" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" - integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== - dependencies: - d3-array "^3.2.0" - -d3-delaunay@6: - version "6.0.4" - resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" - integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== - dependencies: - delaunator "5" - -"d3-dispatch@1 - 3", d3-dispatch@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" - integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== - -"d3-drag@2 - 3", d3-drag@3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" - integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== - dependencies: - d3-dispatch "1 - 3" - d3-selection "3" - -"d3-dsv@1 - 3", d3-dsv@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" - integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== - dependencies: - commander "7" - iconv-lite "0.6" - rw "1" - -"d3-ease@1 - 3", d3-ease@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" - integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== - -d3-fetch@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" - integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== - dependencies: - d3-dsv "1 - 3" - -d3-force@3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" - integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== - dependencies: - d3-dispatch "1 - 3" - d3-quadtree "1 - 3" - d3-timer "1 - 3" - -"d3-format@1 - 3", d3-format@3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" - integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== - -d3-geo@3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d" - integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== - dependencies: - d3-array "2.5.0 - 3" - -d3-hierarchy@3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" - integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== - -"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" - integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== - dependencies: - d3-color "1 - 3" - -d3-path@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - -"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" - integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== - -d3-polygon@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" - integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== - -"d3-quadtree@1 - 3", d3-quadtree@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" - integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== - -d3-random@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" - integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== - -d3-sankey@^0.12.3: - version "0.12.3" - resolved "https://registry.yarnpkg.com/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d" - integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== - dependencies: - d3-array "1 - 2" - d3-shape "^1.2.0" - -d3-scale-chromatic@3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" - integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== - dependencies: - d3-color "1 - 3" - d3-interpolate "1 - 3" - -d3-scale@4: - version "4.0.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" - integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== - dependencies: - d3-array "2.10.0 - 3" - d3-format "1 - 3" - d3-interpolate "1.2.0 - 3" - d3-time "2.1.1 - 3" - d3-time-format "2 - 4" - -"d3-selection@2 - 3", d3-selection@3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" - integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== - -d3-shape@3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" - integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== - dependencies: - d3-path "^3.1.0" - -d3-shape@^1.2.0: - version "1.3.7" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - -"d3-time-format@2 - 4", d3-time-format@4: - version "4.1.0" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" - integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== - dependencies: - d3-time "1 - 3" - -"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" - integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== - dependencies: - d3-array "2 - 3" - -"d3-timer@1 - 3", d3-timer@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" - integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== - -"d3-transition@2 - 3", d3-transition@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" - integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== - dependencies: - d3-color "1 - 3" - d3-dispatch "1 - 3" - d3-ease "1 - 3" - d3-interpolate "1 - 3" - d3-timer "1 - 3" - -d3-zoom@3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" - integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== - dependencies: - d3-dispatch "1 - 3" - d3-drag "2 - 3" - d3-interpolate "1 - 3" - d3-selection "2 - 3" - d3-transition "2 - 3" - -d3@^7.4.0, d3@^7.8.2: - version "7.9.0" - resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d" - integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== - dependencies: - d3-array "3" - d3-axis "3" - d3-brush "3" - d3-chord "3" - d3-color "3" - d3-contour "4" - d3-delaunay "6" - d3-dispatch "3" - d3-drag "3" - d3-dsv "3" - d3-ease "3" - d3-fetch "3" - d3-force "3" - d3-format "3" - d3-geo "3" - d3-hierarchy "3" - d3-interpolate "3" - d3-path "3" - d3-polygon "3" - d3-quadtree "3" - d3-random "3" - d3-scale "4" - d3-scale-chromatic "3" - d3-selection "3" - d3-shape "3" - d3-time "3" - d3-time-format "4" - d3-timer "3" - d3-transition "3" - d3-zoom "3" - -dagre-d3-es@7.0.10: - version "7.0.10" - resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz#19800d4be674379a3cd8c86a8216a2ac6827cadc" - integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A== - dependencies: - d3 "^7.8.2" - lodash-es "^4.17.21" - -damerau-levenshtein@^1.0.4: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-urls@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" - integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== - dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -date-fns@2.29.3: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== - -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - -dayjs@^1.11.7: - version "1.11.11" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e" - integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== - -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@2.6.9, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.1.0, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debuglog@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - -decimal.js@^10.4.2: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -decode-named-character-reference@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" - integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== - dependencies: - character-entities "^2.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -default-browser-id@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" - integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== - dependencies: - bplist-parser "^0.2.0" - untildify "^4.0.0" - -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== - dependencies: - execa "^5.0.0" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -defu@^6.1.4: - version "6.1.4" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" - integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== - -del@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - 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" - -delaunator@5: - version "5.0.1" - resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" - integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== - dependencies: - robust-predicates "^3.0.2" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - integrity sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ== - -denque@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" - integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== - -denque@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" - integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -dequal@^2.0.0, dequal@^2.0.2, dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-indent@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-package-manager@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" - integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== - dependencies: - execa "^5.1.1" - -detect-port@^1.3.0, detect-port@^1.5.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.6.1.tgz#45e4073997c5f292b957cb678fb0bb8ed4250a67" - integrity sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q== - dependencies: - address "^1.0.1" - debug "4" - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diff@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-packet@^5.2.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" - integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + "esutils" "^2.0.2" + +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" dependencies: - "@leichtgewicht/ip-codec" "^2.0.1" + "esutils" "^2.0.2" -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== +"dom-converter@^0.2.0": + "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" + "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + "version" "0.2.0" dependencies: - esutils "^2.0.2" + "utila" "~0.4" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== +"dom-serializer@^1.0.1": + "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + "version" "1.4.1" dependencies: - esutils "^2.0.2" + "domelementtype" "^2.0.1" + "domhandler" "^4.2.0" + "entities" "^2.0.0" -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" +"dom-serializer@^2.0.0": + "integrity" "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" + "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "domelementtype" "^2.3.0" + "domhandler" "^5.0.2" + "entities" "^4.2.0" + +"domelementtype@^2.0.1", "domelementtype@^2.2.0", "domelementtype@^2.3.0": + "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + "version" "2.3.0" -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== +"domexception@^4.0.0": + "integrity" "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==" + "resolved" "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" + "version" "4.0.0" dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - dependencies: - webidl-conversions "^7.0.0" - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -dompurify@^3.0.5: - version "3.1.2" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.2.tgz#d1e158457e00666ab40c9c3d8aab57586a072bd1" - integrity sha512-hLGGBI1tw5N8qTELr3blKjAML/LY4ANxksbS612UiJyDfyf/2D092Pvm+S7pmeTGJRqvlJkFzBoHBQKgQlOQVg== - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dotenv-expand@10.0.0, dotenv-expand@^10.0.0, dotenv-expand@~10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" - integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - -dotenv@16.1.4: - version "16.1.4" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.1.4.tgz#67ac1a10cd9c25f5ba604e4e08bc77c0ebe0ca8c" - integrity sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw== - -dotenv@^16.0.0: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== - -dotenv@~16.3.1: - version "16.3.2" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.2.tgz#3cb611ce5a63002dbabf7c281bc331f69d28f03f" - integrity sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ== - -duplexer@^0.1.1, duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.5.0, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.7, ejs@^3.1.8: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.668: - version "1.4.761" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.761.tgz#d1bdf8c50a254f8a756641bb1ac48bb52e4d0ec3" - integrity sha512-PIbxpiJGx6Bb8dQaonNc6CGTRlVntdLg/2nMa1YhnrwYOORY9a3ZgGN0UQYE6lAcj/lkyduJN7BPt/JiY+jAQQ== - -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ== - -elkjs@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.9.3.tgz#16711f8ceb09f1b12b99e971b138a8384a529161" - integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ== - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emoji-toolkit@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-toolkit/-/emoji-toolkit-8.0.0.tgz#59e0273a4a32d653b5125e9a1b8823f0611a042a" - integrity sha512-Vz8YIqQJsQ+QZ4yuKMMzliXceayqfWbNjb6bST+vm77QAhU2is3I+/PRxrNknW+q1bvHHMgjLCQXxzINWLVapg== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.16.0, enhanced-resolve@^5.7.0: - version "5.16.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" - integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -env-paths@^2.2.0, env-paths@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envalid@7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/envalid/-/envalid-7.3.1.tgz#5bf6bbb4effab2d64a1991d8078b4ae38924f0d2" - integrity sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg== - dependencies: - tslib "2.3.1" - -envinfo@^7.7.3: - version "7.13.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" - integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -errno@^0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.2.1, es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^1.2.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497" - integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA== - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -esbuild-plugin-alias@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz#45a86cb941e20e7c2bc68a2bea53562172494fcb" - integrity sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ== - -esbuild-register@^3.4.0, esbuild-register@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.5.0.tgz#449613fb29ab94325c722f560f800dd946dc8ea8" - integrity sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A== - dependencies: - debug "^4.3.4" - -esbuild-wasm@0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz#fdc14b95e3e16ec8e082dd641edb96140c1723f7" - integrity sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A== - -esbuild-wasm@>=0.15.13: - version "0.21.1" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.21.1.tgz#f436956629ed01d753e06b9806dc938860a01d37" - integrity sha512-ysEyOGsgFji6Vkh1R2C0A2QxglvKun84aOGB1JJXiLnwt8HWktI7mc/CaCnQ+nwZmLBe2IjmmBpe/mStTzYTsw== - -esbuild@0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.1.tgz#1e4cbb380ad1959db7609cb9573ee77257724a3e" - integrity sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.20.1" - "@esbuild/android-arm" "0.20.1" - "@esbuild/android-arm64" "0.20.1" - "@esbuild/android-x64" "0.20.1" - "@esbuild/darwin-arm64" "0.20.1" - "@esbuild/darwin-x64" "0.20.1" - "@esbuild/freebsd-arm64" "0.20.1" - "@esbuild/freebsd-x64" "0.20.1" - "@esbuild/linux-arm" "0.20.1" - "@esbuild/linux-arm64" "0.20.1" - "@esbuild/linux-ia32" "0.20.1" - "@esbuild/linux-loong64" "0.20.1" - "@esbuild/linux-mips64el" "0.20.1" - "@esbuild/linux-ppc64" "0.20.1" - "@esbuild/linux-riscv64" "0.20.1" - "@esbuild/linux-s390x" "0.20.1" - "@esbuild/linux-x64" "0.20.1" - "@esbuild/netbsd-x64" "0.20.1" - "@esbuild/openbsd-x64" "0.20.1" - "@esbuild/sunos-x64" "0.20.1" - "@esbuild/win32-arm64" "0.20.1" - "@esbuild/win32-ia32" "0.20.1" - "@esbuild/win32-x64" "0.20.1" - -esbuild@>=0.15.13: - version "0.21.1" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.1.tgz#3d6f199f6ec849158278c6632f438463bab88c38" - integrity sha512-GPqx+FX7mdqulCeQ4TsGZQ3djBJkx5k7zBGtqt9ycVlWNg8llJ4RO9n2vciu8BN2zAEs6lPbPl0asZsAh7oWzg== - optionalDependencies: - "@esbuild/aix-ppc64" "0.21.1" - "@esbuild/android-arm" "0.21.1" - "@esbuild/android-arm64" "0.21.1" - "@esbuild/android-x64" "0.21.1" - "@esbuild/darwin-arm64" "0.21.1" - "@esbuild/darwin-x64" "0.21.1" - "@esbuild/freebsd-arm64" "0.21.1" - "@esbuild/freebsd-x64" "0.21.1" - "@esbuild/linux-arm" "0.21.1" - "@esbuild/linux-arm64" "0.21.1" - "@esbuild/linux-ia32" "0.21.1" - "@esbuild/linux-loong64" "0.21.1" - "@esbuild/linux-mips64el" "0.21.1" - "@esbuild/linux-ppc64" "0.21.1" - "@esbuild/linux-riscv64" "0.21.1" - "@esbuild/linux-s390x" "0.21.1" - "@esbuild/linux-x64" "0.21.1" - "@esbuild/netbsd-x64" "0.21.1" - "@esbuild/openbsd-x64" "0.21.1" - "@esbuild/sunos-x64" "0.21.1" - "@esbuild/win32-arm64" "0.21.1" - "@esbuild/win32-ia32" "0.21.1" - "@esbuild/win32-x64" "0.21.1" - -esbuild@^0.17.0: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== - optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" - -esbuild@^0.18.0: - version "0.18.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" - integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== - optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" - -esbuild@^0.19.3: - version "0.19.12" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" - integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + "webidl-conversions" "^7.0.0" + +"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": + "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + "version" "4.3.1" + dependencies: + "domelementtype" "^2.2.0" + +"domhandler@^5.0.2", "domhandler@^5.0.3": + "integrity" "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" + "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + "version" "5.0.3" + dependencies: + "domelementtype" "^2.3.0" + +"dompurify@^3.0.5": + "integrity" "sha512-hLGGBI1tw5N8qTELr3blKjAML/LY4ANxksbS612UiJyDfyf/2D092Pvm+S7pmeTGJRqvlJkFzBoHBQKgQlOQVg==" + "resolved" "https://registry.npmjs.org/dompurify/-/dompurify-3.1.2.tgz" + "version" "3.1.2" + +"domutils@^2.5.2", "domutils@^2.8.0": + "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + "version" "2.8.0" + dependencies: + "dom-serializer" "^1.0.1" + "domelementtype" "^2.2.0" + "domhandler" "^4.2.0" + +"domutils@^3.0.1": + "integrity" "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==" + "resolved" "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "dom-serializer" "^2.0.0" + "domelementtype" "^2.3.0" + "domhandler" "^5.0.3" + +"dot-case@^3.0.4": + "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" + "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"dotenv-expand@~11.0.6": + "integrity" "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==" + "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz" + "version" "11.0.6" + dependencies: + "dotenv" "^16.4.4" + +"dotenv-expand@10.0.0": + "integrity" "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==" + "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz" + "version" "10.0.0" + +"dotenv@^16.4.4", "dotenv@~16.4.5": + "integrity" "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==" + "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz" + "version" "16.4.5" + +"dotenv@16.1.4": + "integrity" "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==" + "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz" + "version" "16.1.4" + +"duplexer@^0.1.1", "duplexer@^0.1.2": + "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + "version" "0.1.2" + +"eastasianwidth@^0.2.0": + "integrity" "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "resolved" "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + "version" "0.2.0" + +"ecc-jsbn@~0.1.1": + "integrity" "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==" + "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + "version" "0.1.2" + dependencies: + "jsbn" "~0.1.0" + "safer-buffer" "^2.1.0" + +"ecdsa-sig-formatter@^1.0.11", "ecdsa-sig-formatter@1.0.11": + "integrity" "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==" + "resolved" "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + "version" "1.0.11" + dependencies: + "safe-buffer" "^5.0.1" + +"ee-first@1.1.1": + "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "version" "1.1.1" + +"ejs@^3.1.7": + "integrity" "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==" + "resolved" "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz" + "version" "3.1.10" + dependencies: + "jake" "^10.8.5" + +"electron-to-chromium@^1.5.4": + "integrity" "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz" + "version" "1.5.13" + +"elegant-spinner@^1.0.1": + "integrity" "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==" + "resolved" "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz" + "version" "1.0.1" + +"elkjs@^0.9.0": + "integrity" "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==" + "resolved" "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz" + "version" "0.9.3" + +"emittery@^0.13.1": + "integrity" "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" + "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + "version" "0.13.1" + +"emoji-regex@^10.3.0": + "integrity" "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz" + "version" "10.4.0" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"emoji-regex@^9.2.2": + "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + "version" "9.2.2" + +"emoji-toolkit@^8.0.0": + "integrity" "sha512-Vz8YIqQJsQ+QZ4yuKMMzliXceayqfWbNjb6bST+vm77QAhU2is3I+/PRxrNknW+q1bvHHMgjLCQXxzINWLVapg==" + "resolved" "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-8.0.0.tgz" + "version" "8.0.0" + +"emojis-list@^3.0.0": + "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + "version" "3.0.0" + +"encodeurl@^1.0.2", "encodeurl@~1.0.2": + "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + "version" "1.0.2" + +"encoding@^0.1.0", "encoding@^0.1.13": + "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" + "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + "version" "0.1.13" + dependencies: + "iconv-lite" "^0.6.2" + +"end-of-stream@^1.1.0", "end-of-stream@^1.4.1": + "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" + "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + "version" "1.4.4" + dependencies: + "once" "^1.4.0" + +"enhanced-resolve@^5.0.0", "enhanced-resolve@^5.17.0", "enhanced-resolve@^5.7.0": + "integrity" "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==" + "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz" + "version" "5.17.1" + dependencies: + "graceful-fs" "^4.2.4" + "tapable" "^2.2.0" + +"enquirer@~2.3.6": + "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" + "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + "version" "2.3.6" + dependencies: + "ansi-colors" "^4.1.1" + +"entities@^2.0.0": + "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + "version" "2.2.0" + +"entities@^4.2.0", "entities@^4.3.0", "entities@^4.4.0": + "integrity" "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + "resolved" "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + "version" "4.5.0" + +"env-paths@^2.2.0", "env-paths@^2.2.1": + "integrity" "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + "resolved" "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + "version" "2.2.1" + +"envalid@7.3.1": + "integrity" "sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg==" + "resolved" "https://registry.npmjs.org/envalid/-/envalid-7.3.1.tgz" + "version" "7.3.1" + dependencies: + "tslib" "2.3.1" + +"envinfo@^7.7.3": + "integrity" "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==" + "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz" + "version" "7.13.0" + +"environment@^1.0.0": + "integrity" "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==" + "resolved" "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz" + "version" "1.1.0" + +"err-code@^2.0.2": + "integrity" "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + "resolved" "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz" + "version" "2.0.3" + +"errno@^0.1.1": + "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" + "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + "version" "0.1.8" + dependencies: + "prr" "~1.0.1" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"error-inject@^1.0.0": + "integrity" "sha512-JM8N6PytDbmIYm1IhPWlo8vr3NtfjhDY/1MhD/a5b/aad/USE8a0+NsqE9d5n+GVGmuNkPQWm4bFQWv18d8tMg==" + "resolved" "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz" + "version" "1.0.0" + +"es-abstract@^1.22.1", "es-abstract@^1.22.3", "es-abstract@^1.23.0", "es-abstract@^1.23.2": + "integrity" "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz" + "version" "1.23.3" + dependencies: + "array-buffer-byte-length" "^1.0.1" + "arraybuffer.prototype.slice" "^1.0.3" + "available-typed-arrays" "^1.0.7" + "call-bind" "^1.0.7" + "data-view-buffer" "^1.0.1" + "data-view-byte-length" "^1.0.1" + "data-view-byte-offset" "^1.0.0" + "es-define-property" "^1.0.0" + "es-errors" "^1.3.0" + "es-object-atoms" "^1.0.0" + "es-set-tostringtag" "^2.0.3" + "es-to-primitive" "^1.2.1" + "function.prototype.name" "^1.1.6" + "get-intrinsic" "^1.2.4" + "get-symbol-description" "^1.0.2" + "globalthis" "^1.0.3" + "gopd" "^1.0.1" + "has-property-descriptors" "^1.0.2" + "has-proto" "^1.0.3" + "has-symbols" "^1.0.3" + "hasown" "^2.0.2" + "internal-slot" "^1.0.7" + "is-array-buffer" "^3.0.4" + "is-callable" "^1.2.7" + "is-data-view" "^1.0.1" + "is-negative-zero" "^2.0.3" + "is-regex" "^1.1.4" + "is-shared-array-buffer" "^1.0.3" + "is-string" "^1.0.7" + "is-typed-array" "^1.1.13" + "is-weakref" "^1.0.2" + "object-inspect" "^1.13.1" + "object-keys" "^1.1.1" + "object.assign" "^4.1.5" + "regexp.prototype.flags" "^1.5.2" + "safe-array-concat" "^1.1.2" + "safe-regex-test" "^1.0.3" + "string.prototype.trim" "^1.2.9" + "string.prototype.trimend" "^1.0.8" + "string.prototype.trimstart" "^1.0.8" + "typed-array-buffer" "^1.0.2" + "typed-array-byte-length" "^1.0.1" + "typed-array-byte-offset" "^1.0.2" + "typed-array-length" "^1.0.6" + "unbox-primitive" "^1.0.2" + "which-typed-array" "^1.1.15" + +"es-define-property@^1.0.0": + "integrity" "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==" + "resolved" "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "get-intrinsic" "^1.2.4" + +"es-errors@^1.2.1", "es-errors@^1.3.0": + "integrity" "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + "resolved" "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" + "version" "1.3.0" + +"es-module-lexer@^1.2.1", "es-module-lexer@^1.5.0": + "integrity" "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz" + "version" "1.5.4" + +"es-object-atoms@^1.0.0": + "integrity" "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==" + "resolved" "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "es-errors" "^1.3.0" + +"es-set-tostringtag@^2.0.3": + "integrity" "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==" + "resolved" "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "get-intrinsic" "^1.2.4" + "has-tostringtag" "^1.0.2" + "hasown" "^2.0.1" + +"es-shim-unscopables@^1.0.0", "es-shim-unscopables@^1.0.2": + "integrity" "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==" + "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "hasown" "^2.0.0" + +"es-to-primitive@^1.2.1": + "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" + "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + "version" "1.2.1" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.0.2" + +"esbuild-register@^3.5.0": + "integrity" "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==" + "resolved" "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz" + "version" "3.5.0" + dependencies: + "debug" "^4.3.4" + +"esbuild-wasm@>=0.15.13", "esbuild-wasm@0.21.5": + "integrity" "sha512-L/FlOPMMFtw+6qPAbuPvJXdrOYOp9yx/PEwSrIZW0qghY4vgV003evdYDwqQ/9ENMQI0B6RMod9xT4FHtto6OQ==" + "resolved" "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.21.5.tgz" + "version" "0.21.5" + +"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0", "esbuild@^0.21.3", "esbuild@>=0.12 <1", "esbuild@>=0.15.13", "esbuild@0.21.5": + "integrity" "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==" + "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz" + "version" "0.21.5" optionalDependencies: - "@esbuild/aix-ppc64" "0.19.12" - "@esbuild/android-arm" "0.19.12" - "@esbuild/android-arm64" "0.19.12" - "@esbuild/android-x64" "0.19.12" - "@esbuild/darwin-arm64" "0.19.12" - "@esbuild/darwin-x64" "0.19.12" - "@esbuild/freebsd-arm64" "0.19.12" - "@esbuild/freebsd-x64" "0.19.12" - "@esbuild/linux-arm" "0.19.12" - "@esbuild/linux-arm64" "0.19.12" - "@esbuild/linux-ia32" "0.19.12" - "@esbuild/linux-loong64" "0.19.12" - "@esbuild/linux-mips64el" "0.19.12" - "@esbuild/linux-ppc64" "0.19.12" - "@esbuild/linux-riscv64" "0.19.12" - "@esbuild/linux-s390x" "0.19.12" - "@esbuild/linux-x64" "0.19.12" - "@esbuild/netbsd-x64" "0.19.12" - "@esbuild/openbsd-x64" "0.19.12" - "@esbuild/sunos-x64" "0.19.12" - "@esbuild/win32-arm64" "0.19.12" - "@esbuild/win32-ia32" "0.19.12" - "@esbuild/win32-x64" "0.19.12" - -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^1.8.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +"escalade@^3.1.1", "escalade@^3.1.2": + "integrity" "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" + "version" "3.1.2" + +"escape-html@^1.0.3", "escape-html@~1.0.3": + "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "version" "1.0.3" + +"escape-string-regexp@^1.0.2", "escape-string-regexp@^1.0.5": + "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^2.0.0": + "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + "version" "2.0.0" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"escodegen@^1.8.1": + "integrity" "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==" + "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" + "version" "1.14.3" + dependencies: + "esprima" "^4.0.1" + "estraverse" "^4.2.0" + "esutils" "^2.0.2" + "optionator" "^0.8.1" optionalDependencies: - source-map "~0.6.1" + "source-map" "~0.6.1" -escodegen@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== +"escodegen@^2.0.0": + "integrity" "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==" + "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" + "version" "2.1.0" dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" + "esprima" "^4.0.1" + "estraverse" "^5.2.0" + "esutils" "^2.0.2" optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-module-utils@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== - dependencies: - debug "^3.2.7" - -eslint-plugin-cypress@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.1.tgz#336afa7e8e27451afaf65aa359c9509e0a4f3a7b" - integrity sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w== - dependencies: - globals "^13.20.0" - -eslint-plugin-import@2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" - -eslint-plugin-storybook@0.6.15: - version "0.6.15" - resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.15.tgz#8a091605b0a90974ec8e62d8112db6c4bd3a6faa" - integrity sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w== + "source-map" "~0.6.1" + +"eslint-config-prettier@^9.0.0", "eslint-config-prettier@9.1.0": + "integrity" "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==" + "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz" + "version" "9.1.0" + +"eslint-import-resolver-node@^0.3.9": + "integrity" "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==" + "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz" + "version" "0.3.9" + dependencies: + "debug" "^3.2.7" + "is-core-module" "^2.13.0" + "resolve" "^1.22.4" + +"eslint-module-utils@^2.8.0": + "integrity" "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==" + "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz" + "version" "2.8.1" + dependencies: + "debug" "^3.2.7" + +"eslint-plugin-cypress@2.15.1": + "integrity" "sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w==" + "resolved" "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.15.1.tgz" + "version" "2.15.1" + dependencies: + "globals" "^13.20.0" + +"eslint-plugin-import@2.29.1": + "integrity" "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==" + "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" + "version" "2.29.1" + dependencies: + "array-includes" "^3.1.7" + "array.prototype.findlastindex" "^1.2.3" + "array.prototype.flat" "^1.3.2" + "array.prototype.flatmap" "^1.3.2" + "debug" "^3.2.7" + "doctrine" "^2.1.0" + "eslint-import-resolver-node" "^0.3.9" + "eslint-module-utils" "^2.8.0" + "hasown" "^2.0.0" + "is-core-module" "^2.13.1" + "is-glob" "^4.0.3" + "minimatch" "^3.1.2" + "object.fromentries" "^2.0.7" + "object.groupby" "^1.0.1" + "object.values" "^1.1.7" + "semver" "^6.3.1" + "tsconfig-paths" "^3.15.0" + +"eslint-plugin-storybook@0.6.15": + "integrity" "sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==" + "resolved" "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.15.tgz" + "version" "0.6.15" dependencies: "@storybook/csf" "^0.0.1" "@typescript-eslint/utils" "^5.45.0" - requireindex "^1.1.0" - ts-dedent "^2.2.0" + "requireindex" "^1.1.0" + "ts-dedent" "^2.2.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +"eslint-scope@^5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +"eslint-scope@^7.2.2": + "integrity" "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + "version" "7.2.2" dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" -eslint-scope@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc" - integrity sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og== +"eslint-scope@^8.0.0": + "integrity" "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz" + "version" "8.0.1" dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" -eslint@8.56.0: - version "8.56.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" - integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== +"eslint-scope@5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.56.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -eslint@^8.0.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-visitor-keys@^3.0.0", "eslint-visitor-keys@^3.3.0", "eslint-visitor-keys@^3.4.1", "eslint-visitor-keys@^3.4.3": + "integrity" "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + "version" "3.4.3" + +"eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^8.0.0 || ^9.0.0", "eslint@^8.56.0", "eslint@^8.57.0 || ^9.0.0", "eslint@>= 3.2.1", "eslint@>=6", "eslint@>=7.0.0", "eslint@8.57.0": + "integrity" "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" + "version" "8.57.0" dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" @@ -10738,2313 +8589,2428 @@ eslint@^8.0.0: "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b" - integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== - -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0, esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter2@6.4.9, eventemitter2@^6.4.2: - version "6.4.9" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" - integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0, execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - 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" - -execa@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - -executable@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" - integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== - dependencies: - pify "^2.2.0" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg== - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + "ajv" "^6.12.4" + "chalk" "^4.0.0" + "cross-spawn" "^7.0.2" + "debug" "^4.3.2" + "doctrine" "^3.0.0" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^7.2.2" + "eslint-visitor-keys" "^3.4.3" + "espree" "^9.6.1" + "esquery" "^1.4.2" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^6.0.1" + "find-up" "^5.0.0" + "glob-parent" "^6.0.2" + "globals" "^13.19.0" + "graphemer" "^1.4.0" + "ignore" "^5.2.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "is-path-inside" "^3.0.3" + "js-yaml" "^4.1.0" + "json-stable-stringify-without-jsonify" "^1.0.1" + "levn" "^0.4.1" + "lodash.merge" "^4.6.2" + "minimatch" "^3.1.2" + "natural-compare" "^1.4.0" + "optionator" "^0.9.3" + "strip-ansi" "^6.0.1" + "text-table" "^0.2.0" + +"espree@^9.0.0", "espree@^9.6.0", "espree@^9.6.1": + "integrity" "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==" + "resolved" "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + "version" "9.6.1" + dependencies: + "acorn" "^8.9.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.4.1" + +"esprima@^4.0.0", "esprima@^4.0.1", "esprima@~4.0.0": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esprima@1.2.2": + "integrity" "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz" + "version" "1.2.2" + +"esquery@^1.4.0", "esquery@^1.4.2": + "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^4.2.0": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.1.0", "estraverse@^5.2.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"etag@~1.8.1": + "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + "version" "1.8.1" + +"event-target-shim@^5.0.0": + "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + "version" "5.0.1" + +"eventemitter2@^6.4.2", "eventemitter2@6.4.9": + "integrity" "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" + "resolved" "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz" + "version" "6.4.9" + +"eventemitter3@^4.0.0": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"eventemitter3@^5.0.1": + "integrity" "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + "version" "5.0.1" + +"events@^3.2.0": + "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + "version" "3.3.0" + +"execa@^4.0.2": + "integrity" "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==" + "resolved" "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "cross-spawn" "^7.0.0" + "get-stream" "^5.0.0" + "human-signals" "^1.1.1" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.0" + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + "strip-final-newline" "^2.0.0" + +"execa@^5.0.0": + "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + "version" "5.1.1" + 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" + +"execa@^8.0.1": + "integrity" "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" + "version" "8.0.1" + dependencies: + "cross-spawn" "^7.0.3" + "get-stream" "^8.0.1" + "human-signals" "^5.0.0" + "is-stream" "^3.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^5.1.0" + "onetime" "^6.0.0" + "signal-exit" "^4.1.0" + "strip-final-newline" "^3.0.0" + +"executable@^4.1.1": + "integrity" "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==" + "resolved" "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz" + "version" "4.1.1" + dependencies: + "pify" "^2.2.0" + +"exit-hook@^1.0.0": + "integrity" "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==" + "resolved" "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz" + "version" "1.1.1" + +"exit@^0.1.2": + "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" + "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + "version" "0.1.2" + +"expand-tilde@^2.0.0", "expand-tilde@^2.0.2": + "integrity" "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==" + "resolved" "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "homedir-polyfill" "^1.0.1" + +"expect@^29.0.0", "expect@^29.7.0": + "integrity" "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==" + "resolved" "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -exponential-backoff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" - integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== - -express@4.18.2: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - 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" - -express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extract-zip@^1.6.6, extract-zip@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + "jest-get-type" "^29.6.3" + "jest-matcher-utils" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + +"exponential-backoff@^3.1.1": + "integrity" "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + "resolved" "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" + "version" "3.1.1" + +"express@^4.17.3", "express@^4.18.1", "express@4.18.2": + "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" + "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + "version" "4.18.2" + 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" + +"express@^4.19.2": + "integrity" "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==" + "resolved" "https://registry.npmjs.org/express/-/express-4.19.2.tgz" + "version" "4.19.2" + dependencies: + "accepts" "~1.3.8" + "array-flatten" "1.1.1" + "body-parser" "1.20.2" + "content-disposition" "0.5.4" + "content-type" "~1.0.4" + "cookie" "0.6.0" + "cookie-signature" "1.0.6" + "debug" "2.6.9" + "depd" "2.0.0" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "finalhandler" "1.2.0" + "fresh" "0.5.2" + "http-errors" "2.0.0" + "merge-descriptors" "1.0.1" + "methods" "~1.1.2" + "on-finished" "2.4.1" + "parseurl" "~1.3.3" + "path-to-regexp" "0.1.7" + "proxy-addr" "~2.0.7" + "qs" "6.11.0" + "range-parser" "~1.2.1" + "safe-buffer" "5.2.1" + "send" "0.18.0" + "serve-static" "1.15.0" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "type-is" "~1.6.18" + "utils-merge" "1.0.1" + "vary" "~1.1.2" + +"extend@^3.0.2", "extend@~3.0.2": + "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + "version" "3.0.2" + +"external-editor@^3.1.0": + "integrity" "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==" + "resolved" "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "chardet" "^0.7.0" + "iconv-lite" "^0.4.24" + "tmp" "^0.0.33" + +"extract-zip@^1.7.0": + "integrity" "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==" + "resolved" "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "concat-stream" "^1.6.2" + "debug" "^2.6.9" + "mkdirp" "^0.5.4" + "yauzl" "^2.10.0" + +"extsprintf@^1.2.0", "extsprintf@1.3.0": + "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + "version" "1.3.0" + +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-glob@^3.2.12", "fast-glob@^3.2.7", "fast-glob@^3.2.9", "fast-glob@^3.3.2", "fast-glob@3.3.2": + "integrity" "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" + "version" "3.3.2" 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" + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" -fast-glob@3.3.2, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== +"fast-glob@3.2.7": + "integrity" "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" + "version" "3.2.7" 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" + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" + +"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.0", "fast-json-stable-stringify@2.x": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"fast-levenshtein@^2.0.6", "fast-levenshtein@~2.0.6": + "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" + +"fast-safe-stringify@2.1.1": + "integrity" "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + "version" "2.1.1" + +"fast-text-encoding@^1.0.0": + "integrity" "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + "resolved" "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz" + "version" "1.0.6" + +"fastparse@^1.1.2": + "integrity" "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + "resolved" "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz" + "version" "1.1.2" + +"fastq@^1.6.0": + "integrity" "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" + "version" "1.17.1" + dependencies: + "reusify" "^1.0.4" + +"faye-websocket@^0.11.3": + "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" + "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + "version" "0.11.4" + dependencies: + "websocket-driver" ">=0.5.1" + +"fb-watchman@^2.0.0": + "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" + "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "bser" "2.1.1" + +"fd-package-json@^1.2.0": + "integrity" "sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==" + "resolved" "https://registry.npmjs.org/fd-package-json/-/fd-package-json-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "walk-up-path" "^3.0.1" + +"fd-slicer@~1.1.0": + "integrity" "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==" + "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "pend" "~1.2.0" + +"figures@^1.7.0": + "integrity" "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==" + "resolved" "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz" + "version" "1.7.0" + dependencies: + "escape-string-regexp" "^1.0.5" + "object-assign" "^4.1.0" + +"figures@^2.0.0": + "integrity" "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==" + "resolved" "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "escape-string-regexp" "^1.0.5" + +"figures@3.2.0": + "integrity" "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==" + "resolved" "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "escape-string-regexp" "^1.0.5" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + +"filelist@^1.0.4": + "integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==" + "resolved" "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "minimatch" "^5.0.1" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"finalhandler@1.2.0": + "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + "version" "1.2.0" + 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" + +"find-cache-dir@^2.0.0": + "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^2.0.0" + "pkg-dir" "^3.0.0" + +"find-cache-dir@^3.3.2": + "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^3.0.2" + "pkg-dir" "^4.1.0" + +"find-cache-dir@^4.0.0": + "integrity" "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "common-path-prefix" "^3.0.0" + "pkg-dir" "^7.0.0" + +"find-file-up@^2.0.1": + "integrity" "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==" + "resolved" "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "resolve-dir" "^1.0.1" + +"find-pkg@2.0.0": + "integrity" "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==" + "resolved" "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "find-file-up" "^2.0.1" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +"find-up@^3.0.0": + "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "locate-path" "^3.0.0" -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +"find-up@^4.0.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^4.1.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"find-up@^6.3.0": + "integrity" "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz" + "version" "6.3.0" + dependencies: + "locate-path" "^7.1.0" + "path-exists" "^5.0.0" + +"flat-cache@^3.0.4": + "integrity" "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "flatted" "^3.2.9" + "keyv" "^4.5.3" + "rimraf" "^3.0.2" + +"flat@^5.0.2": + "integrity" "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + "resolved" "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + "version" "5.0.2" + +"flatted@^3.2.7", "flatted@^3.2.9": + "integrity" "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" + "version" "3.3.1" + +"flow-parser@0.*": + "integrity" "sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==" + "resolved" "https://registry.npmjs.org/flow-parser/-/flow-parser-0.235.1.tgz" + "version" "0.235.1" -fast-safe-stringify@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== +"follow-redirects@^1.0.0", "follow-redirects@^1.14.0", "follow-redirects@^1.15.6": + "integrity" "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" + "version" "1.15.6" -fast-text-encoding@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" - integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== +"for-each@^0.3.3": + "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" + "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + "version" "0.3.3" + dependencies: + "is-callable" "^1.1.3" + +"foreground-child@^3.1.0": + "integrity" "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==" + "resolved" "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "cross-spawn" "^7.0.0" + "signal-exit" "^4.0.1" -fastparse@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== +"forever-agent@~0.6.1": + "integrity" "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "version" "0.6.1" -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -fetch-retry@^5.0.2: - version "5.0.6" - resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" - integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ== - -figures@3.2.0, figures@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-system-cache@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.3.0.tgz#201feaf4c8cd97b9d0d608e96861bb6005f46fe6" - integrity sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ== - dependencies: - fs-extra "11.1.1" - ramda "0.29.0" - -file-system-cache@^2.0.0: - version "2.4.4" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.4.4.tgz#90eb72960e3d7b72d09768d4d4262c98f8d206b6" - integrity sha512-vCYhn8pb5nlC3Gs2FFCOkmf4NEg2Ym3ulJwkmS9o6p9oRShGj6CwTMFvpgZihBlsh373NaM0XgAgDHXQIlS4LQ== - dependencies: - "@types/fs-extra" "11.0.1" - "@types/ramda" "0.29.3" - fs-extra "11.1.1" - ramda "0.29.0" - -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - 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" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.0.0, find-cache-dir@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -flow-parser@0.*: - version "0.235.1" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.235.1.tgz#469c70adfa3c156f3a1792e7b6d7017f01f45f1d" - integrity sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ== - -follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -fork-ts-checker-webpack-plugin@7.2.13: - version "7.2.13" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz#51ffd6a2f96f03ab64b92f8aedf305dbf3dee0f1" - integrity sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg== +"fork-ts-checker-webpack-plugin@^8.0.0": + "integrity" "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==" + "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz" + "version" "8.0.0" dependencies: "@babel/code-frame" "^7.16.7" - chalk "^4.1.2" - chokidar "^3.5.3" - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - fs-extra "^10.0.0" - memfs "^3.4.1" - minimatch "^3.0.4" - node-abort-controller "^3.0.1" - schema-utils "^3.1.1" - semver "^7.3.5" - tapable "^2.2.1" - -fork-ts-checker-webpack-plugin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz#dae45dfe7298aa5d553e2580096ced79b6179504" - integrity sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg== + "chalk" "^4.1.2" + "chokidar" "^3.5.3" + "cosmiconfig" "^7.0.1" + "deepmerge" "^4.2.2" + "fs-extra" "^10.0.0" + "memfs" "^3.4.1" + "minimatch" "^3.0.4" + "node-abort-controller" "^3.0.1" + "schema-utils" "^3.1.1" + "semver" "^7.3.5" + "tapable" "^2.2.1" + +"fork-ts-checker-webpack-plugin@7.2.13": + "integrity" "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==" + "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz" + "version" "7.2.13" dependencies: "@babel/code-frame" "^7.16.7" - chalk "^4.1.2" - chokidar "^3.5.3" - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - fs-extra "^10.0.0" - memfs "^3.4.1" - minimatch "^3.0.4" - node-abort-controller "^3.0.1" - schema-utils "^3.1.1" - semver "^7.3.5" - tapable "^2.2.1" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^11.1.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - 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" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-minipass@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" - integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== - dependencies: - minipass "^7.0.3" - -fs-monkey@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" - integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -gaxios@^4.0.0: - version "4.3.3" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.3.3.tgz#d44bdefe52d34b6435cc41214fdb160b64abfc22" - integrity sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA== - dependencies: - abort-controller "^3.0.0" - extend "^3.0.2" - https-proxy-agent "^5.0.0" - is-stream "^2.0.0" - node-fetch "^2.6.7" - -gcp-metadata@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" - integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== - dependencies: - gaxios "^4.0.0" - json-bigint "^1.0.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - -get-npm-tarball-url@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz#cbd6bb25884622bc3191c761466c93ac83343213" - integrity sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - -getos@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" - integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== - dependencies: - async "^3.2.0" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -giget@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/giget/-/giget-1.2.3.tgz#ef6845d1140e89adad595f7f3bb60aa31c672cb6" - integrity sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA== - dependencies: - citty "^0.1.6" - consola "^3.2.3" - defu "^6.1.4" - node-fetch-native "^1.6.3" - nypm "^0.3.8" - ohash "^1.1.3" - pathe "^1.1.2" - tar "^6.2.0" - -github-slugger@^1.0.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" - integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1, glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-promise@^6.0.2: - version "6.0.5" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-6.0.5.tgz#3d56331b324fd7d097b43ba9e9959e9c7e200e2c" - integrity sha512-uUzvxo60yo/vMLXZHCNAlfdM5U5A07jCnUO8xTK44Z0Vc58poGDXhDx8ju1DmPdprOORh+4Lpog64hl+AJ5piA== - dependencies: - "@types/glob" "^8.0.0" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@^10.0.0, glob@^10.2.2, glob@^10.3.10: - version "10.3.12" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b" - integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.6" - minimatch "^9.0.1" - minipass "^7.0.4" - path-scurry "^1.10.2" - -glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - 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" - -glob@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== - dependencies: - ini "1.3.7" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0, globals@^13.20.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== - dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" - -globby@^11.0.1, globby@^11.0.2, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - 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" - -globby@^12.0.2: - version "12.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" - integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== - dependencies: - array-union "^3.0.1" - dir-glob "^3.0.1" - fast-glob "^3.2.7" - ignore "^5.1.9" - merge2 "^1.4.1" - slash "^4.0.0" - -globby@^13.1.1: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - 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" - -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== - dependencies: - delegate "^3.1.2" - -google-auth-library@^6.1.3: - version "6.1.6" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.6.tgz#deacdcdb883d9ed6bac78bb5d79a078877fdf572" - integrity sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ== - dependencies: - arrify "^2.0.0" - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - fast-text-encoding "^1.0.0" - gaxios "^4.0.0" - gcp-metadata "^4.2.0" - gtoken "^5.0.4" - jws "^4.0.0" - lru-cache "^6.0.0" - -google-p12-pem@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.4.tgz#123f7b40da204de4ed1fbf2fd5be12c047fc8b3b" - integrity sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg== - dependencies: - node-forge "^1.3.1" - -google-spreadsheet@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/google-spreadsheet/-/google-spreadsheet-3.2.0.tgz#ce8aa75c15705aa950ad52b091a6fc4d33dcb329" - integrity sha512-z7XMaqb+26rdo8p51r5O03u8aPLAPzn5YhOXYJPcf2hdMVr0dUbIARgdkRdmGiBeoV/QoU/7VNhq1MMCLZv3kQ== - dependencies: - axios "^0.21.4" - google-auth-library "^6.1.3" - lodash "^4.17.21" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -got@11.8.6: - version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" - integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + "chalk" "^4.1.2" + "chokidar" "^3.5.3" + "cosmiconfig" "^7.0.1" + "deepmerge" "^4.2.2" + "fs-extra" "^10.0.0" + "memfs" "^3.4.1" + "minimatch" "^3.0.4" + "node-abort-controller" "^3.0.1" + "schema-utils" "^3.1.1" + "semver" "^7.3.5" + "tapable" "^2.2.1" + +"form-data@^4.0.0": + "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" + +"form-data@~2.3.2": + "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + "version" "2.3.3" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.6" + "mime-types" "^2.1.12" + +"forwarded@0.2.0": + "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + "version" "0.2.0" + +"fraction.js@^4.3.7": + "integrity" "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" + "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" + "version" "4.3.7" + +"fresh@~0.5.2", "fresh@0.5.2": + "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + "version" "0.5.2" + +"front-matter@^4.0.2": + "integrity" "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==" + "resolved" "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "js-yaml" "^3.13.1" + +"fs-constants@^1.0.0": + "integrity" "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "resolved" "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + "version" "1.0.0" + +"fs-extra@^10.0.0": + "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-extra@^11.1.0": + "integrity" "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" + "version" "11.2.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-extra@^8.1.0": + "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + +"fs-extra@^9.0.1", "fs-extra@9.1.0": + "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + "version" "9.1.0" + dependencies: + "at-least-node" "^1.0.0" + "graceful-fs" "^4.2.0" + "jsonfile" "^6.0.1" + "universalify" "^2.0.0" + +"fs-minipass@^2.0.0": + "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "minipass" "^3.0.0" + +"fs-minipass@^3.0.0": + "integrity" "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "minipass" "^7.0.3" + +"fs-monkey@^1.0.4": + "integrity" "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" + "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz" + "version" "1.0.6" + +"fs.realpath@^1.0.0": + "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"function-bind@^1.1.2": + "integrity" "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + "version" "1.1.2" + +"function.prototype.name@^1.1.6": + "integrity" "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==" + "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" + "version" "1.1.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.2.0" + "es-abstract" "^1.22.1" + "functions-have-names" "^1.2.3" + +"functions-have-names@^1.2.3": + "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + "version" "1.2.3" + +"gaxios@^4.0.0": + "integrity" "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==" + "resolved" "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz" + "version" "4.3.3" + dependencies: + "abort-controller" "^3.0.0" + "extend" "^3.0.2" + "https-proxy-agent" "^5.0.0" + "is-stream" "^2.0.0" + "node-fetch" "^2.6.7" + +"gcp-metadata@^4.2.0": + "integrity" "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==" + "resolved" "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz" + "version" "4.3.1" + dependencies: + "gaxios" "^4.0.0" + "json-bigint" "^1.0.0" + +"gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"get-caller-file@^2.0.5": + "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + "version" "2.0.5" + +"get-east-asian-width@^1.0.0": + "integrity" "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==" + "resolved" "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz" + "version" "1.2.0" + +"get-intrinsic@^1.1.3", "get-intrinsic@^1.2.1", "get-intrinsic@^1.2.3", "get-intrinsic@^1.2.4": + "integrity" "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==" + "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" + "version" "1.2.4" + dependencies: + "es-errors" "^1.3.0" + "function-bind" "^1.1.2" + "has-proto" "^1.0.1" + "has-symbols" "^1.0.3" + "hasown" "^2.0.0" + +"get-package-type@^0.1.0": + "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + "version" "0.1.0" + +"get-port@^5.1.1": + "integrity" "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" + "resolved" "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" + "version" "5.1.1" + +"get-stream@^5.0.0", "get-stream@^5.1.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "pump" "^3.0.0" + +"get-stream@^6.0.0": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" + +"get-stream@^8.0.1": + "integrity" "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" + "version" "8.0.1" + +"get-symbol-description@^1.0.2": + "integrity" "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==" + "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.5" + "es-errors" "^1.3.0" + "get-intrinsic" "^1.2.4" + +"getos@^3.2.1": + "integrity" "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==" + "resolved" "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "async" "^3.2.0" + +"getpass@^0.1.1": + "integrity" "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==" + "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + "version" "0.1.7" + dependencies: + "assert-plus" "^1.0.0" + +"giget@^1.0.0": + "integrity" "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==" + "resolved" "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz" + "version" "1.2.3" + dependencies: + "citty" "^0.1.6" + "consola" "^3.2.3" + "defu" "^6.1.4" + "node-fetch-native" "^1.6.3" + "nypm" "^0.3.8" + "ohash" "^1.1.3" + "pathe" "^1.1.2" + "tar" "^6.2.0" + +"github-slugger@^2.0.0": + "integrity" "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + "resolved" "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz" + "version" "2.0.0" + +"glob-parent@^5.1.2", "glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.1": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-parent@^6.0.2": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-to-regexp@^0.4.1": + "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + "version" "0.4.1" + +"glob@^10.2.2": + "integrity" "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==" + "resolved" "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz" + "version" "10.3.12" + dependencies: + "foreground-child" "^3.1.0" + "jackspeak" "^2.3.6" + "minimatch" "^9.0.1" + "minipass" "^7.0.4" + "path-scurry" "^1.10.2" + +"glob@^10.3.10": + "integrity" "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==" + "resolved" "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz" + "version" "10.3.12" + dependencies: + "foreground-child" "^3.1.0" + "jackspeak" "^2.3.6" + "minimatch" "^9.0.1" + "minipass" "^7.0.4" + "path-scurry" "^1.10.2" + +"glob@^10.3.7": + "integrity" "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==" + "resolved" "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + "version" "10.4.5" + dependencies: + "foreground-child" "^3.1.0" + "jackspeak" "^3.1.2" + "minimatch" "^9.0.4" + "minipass" "^7.1.2" + "package-json-from-dist" "^1.0.0" + "path-scurry" "^1.11.1" + +"glob@^7.0.0", "glob@^7.1.1", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + 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" + +"glob@^8.1.0": + "integrity" "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==" + "resolved" "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^5.0.1" + "once" "^1.3.0" + +"global-dirs@^2.0.1": + "integrity" "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==" + "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "ini" "1.3.7" + +"global-modules@^1.0.0": + "integrity" "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==" + "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "global-prefix" "^1.0.1" + "is-windows" "^1.0.1" + "resolve-dir" "^1.0.0" + +"global-prefix@^1.0.1": + "integrity" "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==" + "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "expand-tilde" "^2.0.2" + "homedir-polyfill" "^1.0.1" + "ini" "^1.3.4" + "is-windows" "^1.0.1" + "which" "^1.2.14" + +"globals@^11.1.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globals@^13.19.0": + "integrity" "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + "version" "13.24.0" + dependencies: + "type-fest" "^0.20.2" + +"globals@^13.20.0": + "integrity" "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + "version" "13.24.0" + dependencies: + "type-fest" "^0.20.2" + +"globalthis@^1.0.3": + "integrity" "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==" + "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "define-properties" "^1.2.1" + "gopd" "^1.0.1" + +"globby@^11.1.0": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + 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" + +"globby@^12.0.2": + "integrity" "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==" + "resolved" "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz" + "version" "12.2.0" + dependencies: + "array-union" "^3.0.1" + "dir-glob" "^3.0.1" + "fast-glob" "^3.2.7" + "ignore" "^5.1.9" + "merge2" "^1.4.1" + "slash" "^4.0.0" + +"globby@^14.0.0": + "integrity" "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==" + "resolved" "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz" + "version" "14.0.2" + dependencies: + "@sindresorhus/merge-streams" "^2.1.0" + "fast-glob" "^3.3.2" + "ignore" "^5.2.4" + "path-type" "^5.0.0" + "slash" "^5.1.0" + "unicorn-magic" "^0.1.0" + +"globby@^14.0.1": + "integrity" "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==" + "resolved" "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz" + "version" "14.0.2" + dependencies: + "@sindresorhus/merge-streams" "^2.1.0" + "fast-glob" "^3.3.2" + "ignore" "^5.2.4" + "path-type" "^5.0.0" + "slash" "^5.1.0" + "unicorn-magic" "^0.1.0" + +"good-listener@^1.2.2": + "integrity" "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==" + "resolved" "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz" + "version" "1.2.2" + dependencies: + "delegate" "^3.1.2" + +"google-auth-library@^6.1.3": + "integrity" "sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ==" + "resolved" "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.6.tgz" + "version" "6.1.6" + dependencies: + "arrify" "^2.0.0" + "base64-js" "^1.3.0" + "ecdsa-sig-formatter" "^1.0.11" + "fast-text-encoding" "^1.0.0" + "gaxios" "^4.0.0" + "gcp-metadata" "^4.2.0" + "gtoken" "^5.0.4" + "jws" "^4.0.0" + "lru-cache" "^6.0.0" + +"google-p12-pem@^3.1.3": + "integrity" "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==" + "resolved" "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz" + "version" "3.1.4" + dependencies: + "node-forge" "^1.3.1" + +"google-spreadsheet@3.2.0": + "integrity" "sha512-z7XMaqb+26rdo8p51r5O03u8aPLAPzn5YhOXYJPcf2hdMVr0dUbIARgdkRdmGiBeoV/QoU/7VNhq1MMCLZv3kQ==" + "resolved" "https://registry.npmjs.org/google-spreadsheet/-/google-spreadsheet-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "axios" "^0.21.4" + "google-auth-library" "^6.1.3" + "lodash" "^4.17.21" + +"gopd@^1.0.1": + "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" + "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "get-intrinsic" "^1.1.3" + +"got@11.8.6": + "integrity" "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==" + "resolved" "https://registry.npmjs.org/got/-/got-11.8.6.tgz" + "version" "11.8.6" dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -gtoken@^5.0.4: - version "5.3.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" - integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== - dependencies: - gaxios "^4.0.0" - google-p12-pem "^3.1.3" - jws "^4.0.0" - -gunzip-maybe@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" - integrity sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw== - dependencies: - browserify-zlib "^0.1.4" - is-deflate "^1.0.0" - is-gzip "^1.0.0" - peek-stream "^1.1.0" - pumpify "^1.3.3" - through2 "^2.0.3" - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -handlebars@^4.7.7: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-own-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" - integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -helmet@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/helmet/-/helmet-7.0.0.tgz#ac3011ba82fa2467f58075afa58a49427ba6212d" - integrity sha512-MsIgYmdBh460ZZ8cJC81q4XJknjG567wzEmv46WOBblDb6TUd3z8/GhgmsM9pn8g2B80tAJ4m5/d3Bi1KrSUBQ== - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" - integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== - dependencies: - lru-cache "^10.0.1" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== - dependencies: - whatwg-encoding "^2.0.0" - -html-entities@^2.1.0, html-entities@^2.3.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" - integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== - -html-escaper@^2.0.0, html-escaper@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" - 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" - -html-webpack-plugin@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + "cacheable-lookup" "^5.0.3" + "cacheable-request" "^7.0.2" + "decompress-response" "^6.0.0" + "http2-wrapper" "^1.0.0-beta.5.2" + "lowercase-keys" "^2.0.0" + "p-cancelable" "^2.0.0" + "responselike" "^2.0.0" + +"graceful-fs@^4.1.11", "graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.11", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": + "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + "version" "4.2.11" + +"graphemer@^1.4.0": + "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + "version" "1.4.0" + +"gtoken@^5.0.4": + "integrity" "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==" + "resolved" "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz" + "version" "5.3.2" + dependencies: + "gaxios" "^4.0.0" + "google-p12-pem" "^3.1.3" + "jws" "^4.0.0" + +"gzip-size@^6.0.0": + "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" + "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "duplexer" "^0.1.2" + +"handle-thing@^2.0.0": + "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + "version" "2.0.1" + +"harmony-reflect@^1.4.6": + "integrity" "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" + "resolved" "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" + "version" "1.6.2" + +"has-ansi@^2.0.0": + "integrity" "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==" + "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "ansi-regex" "^2.0.0" + +"has-bigints@^1.0.1", "has-bigints@^1.0.2": + "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + "version" "1.0.2" + +"has-flag@^3.0.0": + "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-own-prop@^2.0.0": + "integrity" "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==" + "resolved" "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz" + "version" "2.0.0" + +"has-property-descriptors@^1.0.0", "has-property-descriptors@^1.0.2": + "integrity" "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==" + "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "es-define-property" "^1.0.0" + +"has-proto@^1.0.1", "has-proto@^1.0.3": + "integrity" "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" + "version" "1.0.3" + +"has-symbols@^1.0.2", "has-symbols@^1.0.3": + "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + "version" "1.0.3" + +"has-tostringtag@^1.0.0", "has-tostringtag@^1.0.2": + "integrity" "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==" + "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "has-symbols" "^1.0.3" + +"hasown@^2.0.0", "hasown@^2.0.1", "hasown@^2.0.2": + "integrity" "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==" + "resolved" "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "function-bind" "^1.1.2" + +"hast-util-heading-rank@^3.0.0": + "integrity" "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==" + "resolved" "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "@types/hast" "^3.0.0" + +"hast-util-is-element@^3.0.0": + "integrity" "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==" + "resolved" "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "@types/hast" "^3.0.0" + +"hast-util-to-string@^3.0.0": + "integrity" "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==" + "resolved" "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "@types/hast" "^3.0.0" + +"he@^1.2.0": + "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + "version" "1.2.0" + +"helmet@7.0.0": + "integrity" "sha512-MsIgYmdBh460ZZ8cJC81q4XJknjG567wzEmv46WOBblDb6TUd3z8/GhgmsM9pn8g2B80tAJ4m5/d3Bi1KrSUBQ==" + "resolved" "https://registry.npmjs.org/helmet/-/helmet-7.0.0.tgz" + "version" "7.0.0" + +"homedir-polyfill@^1.0.1": + "integrity" "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==" + "resolved" "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "parse-passwd" "^1.0.0" + +"hosted-git-info@^7.0.0": + "integrity" "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz" + "version" "7.0.2" + dependencies: + "lru-cache" "^10.0.1" + +"hpack.js@^2.1.6": + "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" + "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + "version" "2.1.6" + dependencies: + "inherits" "^2.0.1" + "obuf" "^1.0.0" + "readable-stream" "^2.0.1" + "wbuf" "^1.1.0" + +"html-encoding-sniffer@^3.0.0": + "integrity" "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==" + "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "whatwg-encoding" "^2.0.0" + +"html-entities@^2.1.0", "html-entities@^2.3.2", "html-entities@^2.4.0": + "integrity" "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==" + "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz" + "version" "2.5.2" + +"html-escaper@^2.0.0", "html-escaper@^2.0.2": + "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + "version" "2.0.2" + +"html-minifier-terser@^6.0.2": + "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" + "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + "version" "6.1.0" + 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" + +"html-webpack-plugin@^5.5.0", "html-webpack-plugin@>= 5.0.0-beta.1 < 6": + "integrity" "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==" + "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz" + "version" "5.6.0" 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" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -htmlparser2@^8.0.1, htmlparser2@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - 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" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + "html-minifier-terser" "^6.0.2" + "lodash" "^4.17.21" + "pretty-error" "^4.0.0" + "tapable" "^2.0.0" + +"htmlparser2@^6.1.0": + "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" + "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.0.0" + "domutils" "^2.5.2" + "entities" "^2.0.0" + +"htmlparser2@^8.0.1", "htmlparser2@^8.0.2": + "integrity" "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==" + "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" + "version" "8.0.2" + dependencies: + "domelementtype" "^2.3.0" + "domhandler" "^5.0.3" + "domutils" "^3.0.1" + "entities" "^4.4.0" + +"http-assert@^1.3.0": + "integrity" "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==" + "resolved" "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "deep-equal" "~1.0.1" + "http-errors" "~1.8.0" + +"http-cache-semantics@^4.0.0", "http-cache-semantics@^4.1.1": + "integrity" "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + "version" "4.1.1" + +"http-deceiver@^1.2.7": + "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + "version" "1.2.7" + +"http-errors@^1.6.3": + "integrity" "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz" + "version" "1.8.1" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" ">= 1.5.0 < 2" + "toidentifier" "1.0.1" + +"http-errors@~1.6.2": + "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + "version" "1.6.3" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.3" + "setprototypeof" "1.1.0" + "statuses" ">= 1.4.0 < 2" + +"http-errors@~1.8.0": + "integrity" "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz" + "version" "1.8.1" + dependencies: + "depd" "~1.1.2" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" ">= 1.5.0 < 2" + "toidentifier" "1.0.1" + +"http-errors@2.0.0": + "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" + "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "depd" "2.0.0" + "inherits" "2.0.4" + "setprototypeof" "1.2.0" + "statuses" "2.0.1" + "toidentifier" "1.0.1" + +"http-parser-js@>=0.5.1": + "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + "version" "0.5.8" + +"http-proxy-agent@^5.0.0": + "integrity" "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" + "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + "version" "5.0.0" dependencies: "@tootallnate/once" "2" - agent-base "6" - debug "4" + "agent-base" "6" + "debug" "4" -http-proxy-agent@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" - integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== +"http-proxy-agent@^7.0.0": + "integrity" "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==" + "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz" + "version" "7.0.2" dependencies: - agent-base "^7.1.0" - debug "^4.3.4" + "agent-base" "^7.1.0" + "debug" "^4.3.4" -http-proxy-middleware@2.0.6, http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== +"http-proxy-middleware@^2.0.3": + "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" + "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + "version" "2.0.6" 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" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-server@^14.1.0: - version "14.1.1" - resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" - integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== - dependencies: - basic-auth "^2.0.1" - chalk "^4.1.2" - corser "^2.0.1" - he "^1.2.0" - html-encoding-sniffer "^3.0.0" - http-proxy "^1.18.1" - mime "^1.6.0" - minimist "^1.2.6" - opener "^1.5.1" - portfinder "^1.0.28" - secure-compare "3.0.1" - union "~0.5.0" - url-join "^4.0.1" - -http-signature@~1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" - integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== - dependencies: - assert-plus "^1.0.0" - jsprim "^2.0.2" - sshpk "^1.14.1" - -http-status-codes@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.3.0.tgz#987fefb28c69f92a43aecc77feec2866349a8bfc" - integrity sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA== - -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - -https-proxy-agent@7.0.4, https-proxy-agent@^7.0.1: - version "7.0.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" - integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== - dependencies: - agent-base "^7.0.2" - debug "4" - -https-proxy-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" - integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== - dependencies: - agent-base "5" - debug "4" - -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@0.6, iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -idb@^7.0.2: - version "7.1.1" - resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" - integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== - dependencies: - harmony-reflect "^1.4.6" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-walk@^6.0.4: - version "6.0.5" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" - integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== - dependencies: - minimatch "^9.0.0" - -ignore@^5.0.4, ignore@^5.1.9, ignore@^5.2.0, ignore@^5.2.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== - -immutable@^4.0.0: - version "4.3.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" - integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== - -import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - -ini@1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - -ini@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.2.tgz#7f646dbd9caea595e61f88ef60bfff8b01f8130a" - integrity sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw== - -inquirer@9.2.15: - version "9.2.15" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.2.15.tgz#2135a36190a6e5c92f5d205e0af1fea36b9d3492" - integrity sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg== - dependencies: - "@ljharb/through" "^2.3.12" - ansi-escapes "^4.3.2" - chalk "^5.3.0" - cli-cursor "^3.1.0" - cli-width "^4.1.0" - external-editor "^3.1.0" - figures "^3.2.0" - lodash "^4.17.21" - mute-stream "1.0.0" - ora "^5.4.1" - run-async "^3.0.0" - rxjs "^7.8.1" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wrap-ansi "^6.2.0" - -internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.0" - side-channel "^1.0.4" + "http-proxy" "^1.18.1" + "is-glob" "^4.0.1" + "is-plain-obj" "^3.0.0" + "micromatch" "^4.0.2" + +"http-proxy-middleware@^3.0.0", "http-proxy-middleware@3.0.0": + "integrity" "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==" + "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "@types/http-proxy" "^1.17.10" + "debug" "^4.3.4" + "http-proxy" "^1.18.1" + "is-glob" "^4.0.1" + "is-plain-obj" "^3.0.0" + "micromatch" "^4.0.5" + +"http-proxy@^1.18.1": + "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" + "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + "version" "1.18.1" + dependencies: + "eventemitter3" "^4.0.0" + "follow-redirects" "^1.0.0" + "requires-port" "^1.0.0" + +"http-server@^14.1.0": + "integrity" "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==" + "resolved" "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz" + "version" "14.1.1" + dependencies: + "basic-auth" "^2.0.1" + "chalk" "^4.1.2" + "corser" "^2.0.1" + "he" "^1.2.0" + "html-encoding-sniffer" "^3.0.0" + "http-proxy" "^1.18.1" + "mime" "^1.6.0" + "minimist" "^1.2.6" + "opener" "^1.5.1" + "portfinder" "^1.0.28" + "secure-compare" "3.0.1" + "union" "~0.5.0" + "url-join" "^4.0.1" + +"http-signature@~1.3.6": + "integrity" "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==" + "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz" + "version" "1.3.6" + dependencies: + "assert-plus" "^1.0.0" + "jsprim" "^2.0.2" + "sshpk" "^1.14.1" + +"http-status-codes@2.3.0": + "integrity" "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==" + "resolved" "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz" + "version" "2.3.0" + +"http2-wrapper@^1.0.0-beta.5.2": + "integrity" "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==" + "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "quick-lru" "^5.1.1" + "resolve-alpn" "^1.0.0" + +"https-proxy-agent@^5.0.0": + "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "agent-base" "6" + "debug" "4" + +"https-proxy-agent@^5.0.1": + "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "agent-base" "6" + "debug" "4" + +"https-proxy-agent@^7.0.1", "https-proxy-agent@7.0.5": + "integrity" "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz" + "version" "7.0.5" + dependencies: + "agent-base" "^7.0.2" + "debug" "4" + +"human-signals@^1.1.1": + "integrity" "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" + "version" "1.1.1" + +"human-signals@^2.1.0": + "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + "version" "2.1.0" + +"human-signals@^5.0.0": + "integrity" "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" + "version" "5.0.0" + +"hyperdyperid@^1.2.0": + "integrity" "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==" + "resolved" "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz" + "version" "1.2.0" + +"iconv-lite@^0.4.24", "iconv-lite@0.4.24": + "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + "version" "0.4.24" + dependencies: + "safer-buffer" ">= 2.1.2 < 3" + +"iconv-lite@^0.6.2": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"iconv-lite@^0.6.3": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"iconv-lite@0.6.3": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"iconv-lite@0.6": + "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"icss-utils@^5.0.0", "icss-utils@^5.1.0": + "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + "version" "5.1.0" + +"idb@^7.0.2": + "integrity" "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + "resolved" "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" + "version" "7.1.1" + +"identity-obj-proxy@3.0.0": + "integrity" "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==" + "resolved" "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "harmony-reflect" "^1.4.6" + +"ieee754@^1.1.13": + "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + "version" "1.2.1" + +"ignore-walk@^6.0.4": + "integrity" "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==" + "resolved" "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz" + "version" "6.0.5" + dependencies: + "minimatch" "^9.0.0" + +"ignore@^5.0.4", "ignore@^5.1.9", "ignore@^5.2.0", "ignore@^5.2.4": + "integrity" "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" + "version" "5.3.1" + +"image-size@~0.5.0": + "integrity" "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==" + "resolved" "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" + "version" "0.5.5" + +"immutable@^4.0.0": + "integrity" "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz" + "version" "4.3.5" + +"import-fresh@^3.1.0", "import-fresh@^3.2.1", "import-fresh@^3.3.0": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"import-local@^3.0.2": + "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" + "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "pkg-dir" "^4.2.0" + "resolve-cwd" "^3.0.0" + +"imurmurhash@^0.1.4": + "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"indent-string@^3.0.0": + "integrity" "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz" + "version" "3.2.0" + +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + +"inflight@^1.0.4": + "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@2", "inherits@2.0.4": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"inherits@2.0.3": + "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "version" "2.0.3" + +"ini@^1.3.4": + "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + "version" "1.3.8" + +"ini@1.3.7": + "integrity" "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" + "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz" + "version" "1.3.7" + +"ini@4.1.3": + "integrity" "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==" + "resolved" "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz" + "version" "4.1.3" + +"internal-slot@^1.0.7": + "integrity" "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==" + "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "es-errors" "^1.3.0" + "hasown" "^2.0.0" + "side-channel" "^1.0.4" + +"internmap@^1.0.0": + "integrity" "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + "resolved" "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" + "version" "1.0.1" "internmap@1 - 2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" - integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== - -internmap@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" - integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + "integrity" "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + "resolved" "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" + "version" "2.0.3" -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" +"interpret@^1.0.0": + "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + "version" "1.4.0" -ionicons@7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/ionicons/-/ionicons-7.4.0.tgz#9c285aaa8089befbd6c5a89ae13292d364cd9ace" - integrity sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ== +"ionicons@7.4.0": + "integrity" "sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ==" + "resolved" "https://registry.npmjs.org/ionicons/-/ionicons-7.4.0.tgz" + "version" "7.4.0" dependencies: "@stencil/core" "^4.0.3" -ioredis@^5.0.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.4.1.tgz#1c56b70b759f01465913887375ed809134296f40" - integrity sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA== +"ioredis@^5.0.0": + "integrity" "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==" + "resolved" "https://registry.npmjs.org/ioredis/-/ioredis-5.4.1.tgz" + "version" "5.4.1" dependencies: "@ioredis/commands" "^1.1.1" - cluster-key-slot "^1.1.0" - debug "^4.3.4" - denque "^2.1.0" - lodash.defaults "^4.2.0" - lodash.isarguments "^3.1.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - -ip-address@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" - integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== - dependencies: - jsbn "1.1.0" - sprintf-js "^1.1.3" - -ip@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" - integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipaddr.js@^2.0.1, ipaddr.js@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" - integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== - -is-absolute-url@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.8.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-deflate@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" - integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-gzip@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" - integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== - -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.1, is-path-inside@^3.0.2, is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-promise@^2.1.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== - dependencies: - call-bind "^1.0.7" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.13, is-typed-array@^1.1.3: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-what@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" - integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isexe@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" - integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== - -iso-url@~0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" - integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isomorphic-unfetch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" - integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== - dependencies: - node-fetch "^2.6.1" - unfetch "^4.2.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + "cluster-key-slot" "^1.1.0" + "debug" "^4.3.4" + "denque" "^2.1.0" + "lodash.defaults" "^4.2.0" + "lodash.isarguments" "^3.1.0" + "redis-errors" "^1.2.0" + "redis-parser" "^3.0.0" + "standard-as-callback" "^2.1.0" + +"ip-address@^9.0.5": + "integrity" "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==" + "resolved" "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz" + "version" "9.0.5" + dependencies: + "jsbn" "1.1.0" + "sprintf-js" "^1.1.3" + +"ipaddr.js@^2.0.1", "ipaddr.js@^2.1.0": + "integrity" "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" + "version" "2.2.0" + +"ipaddr.js@1.9.1": + "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + "version" "1.9.1" + +"is-absolute-url@^4.0.0": + "integrity" "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==" + "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz" + "version" "4.0.1" + +"is-arguments@^1.0.4": + "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" + "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-array-buffer@^3.0.4": + "integrity" "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==" + "resolved" "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.2.1" + +"is-arrayish@^0.2.1": + "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-arrayish@^0.3.1": + "integrity" "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + "version" "0.3.2" + +"is-bigint@^1.0.1": + "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" + "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-bigints" "^1.0.1" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-boolean-object@^1.1.0": + "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" + "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.7": + "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + "version" "1.2.7" + +"is-ci@^2.0.0": + "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "ci-info" "^2.0.0" + +"is-core-module@^2.13.0", "is-core-module@^2.13.1", "is-core-module@^2.8.1": + "integrity" "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" + "version" "2.13.1" + dependencies: + "hasown" "^2.0.0" + +"is-data-view@^1.0.1": + "integrity" "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==" + "resolved" "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "is-typed-array" "^1.1.13" + +"is-date-object@^1.0.1": + "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-docker@^2.0.0", "is-docker@^2.1.1": + "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + "version" "2.2.1" + +"is-docker@^3.0.0": + "integrity" "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==" + "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" + "version" "3.0.0" + +"is-extglob@^2.1.1": + "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-fullwidth-code-point@^1.0.0": + "integrity" "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "number-is-nan" "^1.0.0" + +"is-fullwidth-code-point@^2.0.0": + "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + "version" "2.0.0" + +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-fullwidth-code-point@^4.0.0": + "integrity" "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + "version" "4.0.0" + +"is-fullwidth-code-point@^5.0.0": + "integrity" "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "get-east-asian-width" "^1.0.0" + +"is-generator-fn@^2.0.0": + "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + "version" "2.1.0" + +"is-generator-function@^1.0.7": + "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" + "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-inside-container@^1.0.0": + "integrity" "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==" + "resolved" "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "is-docker" "^3.0.0" + +"is-installed-globally@^0.3.2": + "integrity" "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==" + "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "global-dirs" "^2.0.1" + "is-path-inside" "^3.0.1" + +"is-interactive@^1.0.0": + "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + "version" "1.0.0" + +"is-lambda@^1.0.1": + "integrity" "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + "resolved" "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz" + "version" "1.0.1" + +"is-negative-zero@^2.0.3": + "integrity" "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" + "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz" + "version" "2.0.3" + +"is-network-error@^1.0.0": + "integrity" "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==" + "resolved" "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz" + "version" "1.1.0" + +"is-number-object@^1.0.4": + "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" + "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-observable@^1.1.0": + "integrity" "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==" + "resolved" "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "symbol-observable" "^1.1.0" + +"is-path-inside@^3.0.1", "is-path-inside@^3.0.3": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + +"is-plain-obj@^3.0.0": + "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + "version" "3.0.0" + +"is-plain-object@^2.0.4": + "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "isobject" "^3.0.1" + +"is-plain-object@^5.0.0": + "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + "version" "5.0.0" + +"is-potential-custom-element-name@^1.0.1": + "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + "version" "1.0.1" + +"is-promise@^2.1.0": + "integrity" "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + "resolved" "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" + "version" "2.2.2" + +"is-regex@^1.1.4": + "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" + "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + "version" "1.1.4" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-shared-array-buffer@^1.0.2", "is-shared-array-buffer@^1.0.3": + "integrity" "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==" + "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "call-bind" "^1.0.7" + +"is-stream@^1.1.0": + "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + "version" "1.1.0" + +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" + +"is-stream@^3.0.0": + "integrity" "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + "version" "3.0.0" + +"is-string@^1.0.5", "is-string@^1.0.7": + "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" + "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-symbol@^1.0.2", "is-symbol@^1.0.3": + "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" + "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-symbols" "^1.0.2" + +"is-typed-array@^1.1.13", "is-typed-array@^1.1.3": + "integrity" "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==" + "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz" + "version" "1.1.13" + dependencies: + "which-typed-array" "^1.1.14" + +"is-typedarray@~1.0.0": + "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "version" "1.0.0" + +"is-unicode-supported@^0.1.0": + "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + "version" "0.1.0" + +"is-weakref@^1.0.2": + "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" + "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + +"is-what@^3.14.1": + "integrity" "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + "resolved" "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" + "version" "3.14.1" + +"is-windows@^1.0.1": + "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + "version" "1.0.2" + +"is-wsl@^2.2.0": + "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" + "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "is-docker" "^2.0.0" + +"is-wsl@^3.1.0": + "integrity" "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==" + "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "is-inside-container" "^1.0.0" + +"isarray@^2.0.5": + "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + "version" "2.0.5" + +"isarray@~1.0.0": + "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" + +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"isexe@^3.1.1": + "integrity" "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz" + "version" "3.1.1" + +"iso-url@~0.4.7": + "integrity" "sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog==" + "resolved" "https://registry.npmjs.org/iso-url/-/iso-url-0.4.7.tgz" + "version" "0.4.7" + +"isobject@^3.0.1": + "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + "version" "3.0.1" + +"isomorphic-ws@5.0.0": + "integrity" "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==" + "resolved" "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz" + "version" "5.0.0" + +"isstream@~0.1.2": + "integrity" "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "version" "0.1.2" + +"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": + "integrity" "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==" + "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" + "version" "3.2.2" + +"istanbul-lib-instrument@^5.0.4": + "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + "version" "5.2.1" dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" + "istanbul-lib-coverage" "^3.2.0" + "semver" "^6.3.0" -istanbul-lib-instrument@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" - integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== +"istanbul-lib-instrument@^6.0.0", "istanbul-lib-instrument@6.0.2": + "integrity" "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz" + "version" "6.0.2" dependencies: "@babel/core" "^7.23.9" "@babel/parser" "^7.23.9" "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" + "istanbul-lib-coverage" "^3.2.0" + "semver" "^7.5.4" -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== +"istanbul-lib-report@^3.0.0": + "integrity" "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + "version" "3.0.1" dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" + "istanbul-lib-coverage" "^3.0.0" + "make-dir" "^4.0.0" + "supports-color" "^7.1.0" -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== +"istanbul-lib-source-maps@^4.0.0": + "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + "version" "4.0.1" dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" + "debug" "^4.1.1" + "istanbul-lib-coverage" "^3.0.0" + "source-map" "^0.6.1" -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== +"istanbul-reports@^3.1.3": + "integrity" "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==" + "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz" + "version" "3.1.7" dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" + "html-escaper" "^2.0.0" + "istanbul-lib-report" "^3.0.0" -iterare@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" - integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== +"iterare@1.2.1": + "integrity" "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==" + "resolved" "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" + "version" "1.2.1" + +"jackspeak@^2.3.6": + "integrity" "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==" + "resolved" "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" + "version" "2.3.6" + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" -jackspeak@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== +"jackspeak@^3.1.2": + "integrity" "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==" + "resolved" "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + "version" "3.4.3" dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jake@^10.8.5: - version "10.9.1" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" - integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== +"jake@^10.8.5": + "integrity" "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==" + "resolved" "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz" + "version" "10.9.1" dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" + "async" "^3.2.3" + "chalk" "^4.0.2" + "filelist" "^1.0.4" + "minimatch" "^3.1.2" -javascript-natural-sort@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" - integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== +"javascript-natural-sort@0.7.1": + "integrity" "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" + "resolved" "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz" + "version" "0.7.1" -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== +"jest-changed-files@^29.7.0": + "integrity" "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==" + "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" + "version" "29.7.0" dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" + "execa" "^5.0.0" + "jest-util" "^29.7.0" + "p-limit" "^3.1.0" -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== +"jest-circus@^29.7.0": + "integrity" "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==" + "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/environment" "^29.7.0" "@jest/expect" "^29.7.0" "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.4.3: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + "chalk" "^4.0.0" + "co" "^4.6.0" + "dedent" "^1.0.0" + "is-generator-fn" "^2.0.0" + "jest-each" "^29.7.0" + "jest-matcher-utils" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-runtime" "^29.7.0" + "jest-snapshot" "^29.7.0" + "jest-util" "^29.7.0" + "p-limit" "^3.1.0" + "pretty-format" "^29.7.0" + "pure-rand" "^6.0.0" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + +"jest-cli@^29.7.0": + "integrity" "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==" + "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/core" "^29.7.0" "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.4.1, jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + "chalk" "^4.0.0" + "create-jest" "^29.7.0" + "exit" "^0.1.2" + "import-local" "^3.0.2" + "jest-config" "^29.7.0" + "jest-util" "^29.7.0" + "jest-validate" "^29.7.0" + "yargs" "^17.3.1" + +"jest-config@^29.4.1", "jest-config@^29.7.0": + "integrity" "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==" + "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" + "version" "29.7.0" dependencies: "@babel/core" "^7.11.6" "@jest/test-sequencer" "^29.7.0" "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.4.1, jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + "babel-jest" "^29.7.0" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "deepmerge" "^4.2.2" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "jest-circus" "^29.7.0" + "jest-environment-node" "^29.7.0" + "jest-get-type" "^29.6.3" + "jest-regex-util" "^29.6.3" + "jest-resolve" "^29.7.0" + "jest-runner" "^29.7.0" + "jest-util" "^29.7.0" + "jest-validate" "^29.7.0" + "micromatch" "^4.0.4" + "parse-json" "^5.2.0" + "pretty-format" "^29.7.0" + "slash" "^3.0.0" + "strip-json-comments" "^3.1.1" + +"jest-diff@^29.4.1", "jest-diff@^29.7.0": + "integrity" "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==" + "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "chalk" "^4.0.0" + "diff-sequences" "^29.6.3" + "jest-get-type" "^29.6.3" + "pretty-format" "^29.7.0" + +"jest-docblock@^29.7.0": + "integrity" "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==" + "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "detect-newline" "^3.0.0" + +"jest-each@^29.7.0": + "integrity" "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==" + "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-jsdom@29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.4.3.tgz#bd8ed3808e6d3f616403fbaf8354f77019613d90" - integrity sha512-rFjf8JXrw3OjUzzmSE5l0XjMj0/MSVEUMCSXBGPDkfwb1T03HZI7iJSL0cGctZApPSyJxbjyKDVxkZuyhHkuTw== - dependencies: - "@jest/environment" "^29.4.3" - "@jest/fake-timers" "^29.4.3" - "@jest/types" "^29.4.3" - "@types/jsdom" "^20.0.0" - "@types/node" "*" - jest-mock "^29.4.3" - jest-util "^29.4.3" - jsdom "^20.0.0" + "chalk" "^4.0.0" + "jest-get-type" "^29.6.3" + "jest-util" "^29.7.0" + "pretty-format" "^29.7.0" -jest-environment-jsdom@^29.0.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" - integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== +"jest-environment-jsdom@^29.0.0", "jest-environment-jsdom@^29.5.0", "jest-environment-jsdom@29.7.0": + "integrity" "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==" + "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/environment" "^29.7.0" "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - jsdom "^20.0.0" + "jest-mock" "^29.7.0" + "jest-util" "^29.7.0" + "jsdom" "^20.0.0" -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== +"jest-environment-node@^29.7.0": + "integrity" "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==" + "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/environment" "^29.7.0" "@jest/fake-timers" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" + "jest-mock" "^29.7.0" + "jest-util" "^29.7.0" -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== +"jest-get-type@^29.6.3": + "integrity" "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==" + "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + "version" "29.6.3" -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== +"jest-haste-map@^29.7.0": + "integrity" "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==" + "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/types" "^29.6.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" + "anymatch" "^3.0.3" + "fb-watchman" "^2.0.0" + "graceful-fs" "^4.2.9" + "jest-regex-util" "^29.6.3" + "jest-util" "^29.7.0" + "jest-worker" "^29.7.0" + "micromatch" "^4.0.4" + "walker" "^1.0.8" optionalDependencies: - fsevents "^2.3.2" + "fsevents" "^2.3.2" -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== +"jest-leak-detector@^29.7.0": + "integrity" "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==" + "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" + "version" "29.7.0" dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" + "jest-get-type" "^29.6.3" + "pretty-format" "^29.7.0" -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== +"jest-matcher-utils@^29.7.0": + "integrity" "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==" + "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + "version" "29.7.0" dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" + "chalk" "^4.0.0" + "jest-diff" "^29.7.0" + "jest-get-type" "^29.6.3" + "pretty-format" "^29.7.0" -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== +"jest-message-util@^29.7.0": + "integrity" "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==" + "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + "version" "29.7.0" dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.4.3, jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "micromatch" "^4.0.4" + "pretty-format" "^29.7.0" + "slash" "^3.0.0" + "stack-utils" "^2.0.3" + +"jest-mock@^29.7.0": + "integrity" "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==" + "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-preset-angular@14.0.3: - version "14.0.3" - resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-14.0.3.tgz#ce78451a61bad0e4828bd75dd36542ad5bf48dac" - integrity sha512-usgBL7x0rXMnMSx8iEFeOozj50W6fp+YAmQcQBUdAXhN+PAXRy4UXL6I/rfcAOU09rnnq7RKsLsmhpp/fFEuag== - dependencies: - bs-logger "^0.2.6" - esbuild-wasm ">=0.15.13" - jest-environment-jsdom "^29.0.0" - jest-util "^29.0.0" - pretty-format "^29.0.0" - ts-jest "^29.0.0" + "jest-util" "^29.7.0" + +"jest-pnp-resolver@^1.2.2": + "integrity" "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" + "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + "version" "1.2.3" + +"jest-preset-angular@14.1.0": + "integrity" "sha512-UJwPtpsAMl30UtBjHW0Ai0hhoKsNURC1dXH5tSYjumUsWR7iDke+oBEykz7uXv4rN+PWgeNIqkxo4KHQjOITlw==" + "resolved" "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.1.0.tgz" + "version" "14.1.0" + dependencies: + "bs-logger" "^0.2.6" + "esbuild-wasm" ">=0.15.13" + "jest-environment-jsdom" "^29.0.0" + "jest-util" "^29.0.0" + "pretty-format" "^29.0.0" + "ts-jest" "^29.0.0" optionalDependencies: - esbuild ">=0.15.13" - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.4.1, jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + "esbuild" ">=0.15.13" + +"jest-regex-util@^29.6.3": + "integrity" "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==" + "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" + "version" "29.6.3" + +"jest-resolve-dependencies@^29.7.0": + "integrity" "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==" + "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "jest-regex-util" "^29.6.3" + "jest-snapshot" "^29.7.0" + +"jest-resolve@*", "jest-resolve@^29.4.1", "jest-resolve@^29.7.0": + "integrity" "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==" + "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "chalk" "^4.0.0" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^29.7.0" + "jest-pnp-resolver" "^1.2.2" + "jest-util" "^29.7.0" + "jest-validate" "^29.7.0" + "resolve" "^1.20.0" + "resolve.exports" "^2.0.0" + "slash" "^3.0.0" + +"jest-runner@^29.7.0": + "integrity" "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==" + "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/console" "^29.7.0" "@jest/environment" "^29.7.0" @@ -13052,26 +11018,26 @@ jest-runner@^29.7.0: "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + "chalk" "^4.0.0" + "emittery" "^0.13.1" + "graceful-fs" "^4.2.9" + "jest-docblock" "^29.7.0" + "jest-environment-node" "^29.7.0" + "jest-haste-map" "^29.7.0" + "jest-leak-detector" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-resolve" "^29.7.0" + "jest-runtime" "^29.7.0" + "jest-util" "^29.7.0" + "jest-watcher" "^29.7.0" + "jest-worker" "^29.7.0" + "p-limit" "^3.1.0" + "source-map-support" "0.5.13" + +"jest-runtime@^29.7.0": + "integrity" "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==" + "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/environment" "^29.7.0" "@jest/fake-timers" "^29.7.0" @@ -13081,25 +11047,25 @@ jest-runtime@^29.7.0: "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + "chalk" "^4.0.0" + "cjs-module-lexer" "^1.0.0" + "collect-v8-coverage" "^1.0.0" + "glob" "^7.1.3" + "graceful-fs" "^4.2.9" + "jest-haste-map" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-mock" "^29.7.0" + "jest-regex-util" "^29.6.3" + "jest-resolve" "^29.7.0" + "jest-snapshot" "^29.7.0" + "jest-util" "^29.7.0" + "slash" "^3.0.0" + "strip-bom" "^4.0.0" + +"jest-snapshot@^29.7.0": + "integrity" "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==" + "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" + "version" "29.7.0" dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -13109,1419 +11075,1524 @@ jest-snapshot@^29.7.0: "@jest/expect-utils" "^29.7.0" "@jest/transform" "^29.7.0" "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.4.1, jest-util@^29.4.3, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + "babel-preset-current-node-syntax" "^1.0.0" + "chalk" "^4.0.0" + "expect" "^29.7.0" + "graceful-fs" "^4.2.9" + "jest-diff" "^29.7.0" + "jest-get-type" "^29.6.3" + "jest-matcher-utils" "^29.7.0" + "jest-message-util" "^29.7.0" + "jest-util" "^29.7.0" + "natural-compare" "^1.4.0" + "pretty-format" "^29.7.0" + "semver" "^7.5.3" + +"jest-util@^29.0.0", "jest-util@^29.4.1", "jest-util@^29.7.0": + "integrity" "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==" + "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/types" "^29.6.3" "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" + "chalk" "^4.0.0" + "ci-info" "^3.2.0" + "graceful-fs" "^4.2.9" + "picomatch" "^2.2.3" -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== +"jest-validate@^29.7.0": + "integrity" "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==" + "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" + "camelcase" "^6.2.0" + "chalk" "^4.0.0" + "jest-get-type" "^29.6.3" + "leven" "^3.1.0" + "pretty-format" "^29.7.0" -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== +"jest-watcher@^29.7.0": + "integrity" "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==" + "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/test-result" "^29.7.0" "@jest/types" "^29.6.3" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" + "ansi-escapes" "^4.2.1" + "chalk" "^4.0.0" + "emittery" "^0.13.1" + "jest-util" "^29.7.0" + "string-length" "^4.0.1" -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +"jest-worker@^27.4.5": + "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + "version" "27.5.1" dependencies: "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" -jest-worker@^29.4.3, jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== +"jest-worker@^29.4.3", "jest-worker@^29.7.0": + "integrity" "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==" + "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + "version" "29.7.0" dependencies: "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.4.3.tgz#1b8be541666c6feb99990fd98adac4737e6e6386" - integrity sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA== - dependencies: - "@jest/core" "^29.4.3" - "@jest/types" "^29.4.3" - import-local "^3.0.2" - jest-cli "^29.4.3" - -jiti@^1.20.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - -js-sha256@0.9.0, js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.10.0, js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -"js-yaml@npm:@zkochan/js-yaml@0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz#4b0cb785220d7c28ce0ec4d0804deb5d821eae89" - integrity sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== - dependencies: - argparse "^2.0.1" - -jsbn@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jscodeshift@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" - integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.21.0" - temp "^0.8.4" - write-file-atomic "^2.3.0" - -jsdom@^20.0.0: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" - integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== - dependencies: - abab "^2.0.6" - acorn "^8.8.1" - acorn-globals "^7.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.2" - decimal.js "^10.4.2" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.2" - parse5 "^7.1.1" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.2" - w3c-xmlserializer "^4.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - ws "^8.11.0" - xml-name-validator "^4.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" - integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== - dependencies: - bignumber.js "^9.0.0" - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-parse-even-better-errors@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" - integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json-text-sequence@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - integrity sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w== - dependencies: - delimit-stream "0.1.0" - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc-eslint-parser@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461" - integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== - dependencies: - acorn "^8.5.0" - eslint-visitor-keys "^3.0.0" - espree "^9.0.0" - semver "^7.3.5" - -jsonc-parser@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - -jsonc-parser@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" - integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" + "jest-util" "^29.7.0" + "merge-stream" "^2.0.0" + "supports-color" "^8.0.0" + +"jest@^29.0.0", "jest@^29.5.0", "jest@29.7.0": + "integrity" "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==" + "resolved" "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" + "version" "29.7.0" + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + "import-local" "^3.0.2" + "jest-cli" "^29.7.0" + +"jiti@^1.20.0": + "integrity" "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" + "resolved" "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz" + "version" "1.21.0" + +"jquery@1.9.1 - 3": + "integrity" "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + "resolved" "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz" + "version" "3.7.1" + +"js-sha256@^0.9.0", "js-sha256@0.9.0": + "integrity" "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + "resolved" "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz" + "version" "0.9.0" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-yaml@^3.10.0", "js-yaml@^3.13.1": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"jsbn@~0.1.0": + "integrity" "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "version" "0.1.1" + +"jsbn@1.1.0": + "integrity" "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz" + "version" "1.1.0" + +"jscodeshift@^0.15.1": + "integrity" "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==" + "resolved" "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz" + "version" "0.15.2" + dependencies: + "@babel/core" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.23.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/preset-flow" "^7.22.15" + "@babel/preset-typescript" "^7.23.0" + "@babel/register" "^7.22.15" + "babel-core" "^7.0.0-bridge.0" + "chalk" "^4.1.2" + "flow-parser" "0.*" + "graceful-fs" "^4.2.4" + "micromatch" "^4.0.4" + "neo-async" "^2.5.0" + "node-dir" "^0.1.17" + "recast" "^0.23.3" + "temp" "^0.8.4" + "write-file-atomic" "^2.3.0" + +"jsdom@^20.0.0": + "integrity" "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==" + "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz" + "version" "20.0.3" + dependencies: + "abab" "^2.0.6" + "acorn" "^8.8.1" + "acorn-globals" "^7.0.0" + "cssom" "^0.5.0" + "cssstyle" "^2.3.0" + "data-urls" "^3.0.2" + "decimal.js" "^10.4.2" + "domexception" "^4.0.0" + "escodegen" "^2.0.0" + "form-data" "^4.0.0" + "html-encoding-sniffer" "^3.0.0" + "http-proxy-agent" "^5.0.0" + "https-proxy-agent" "^5.0.1" + "is-potential-custom-element-name" "^1.0.1" + "nwsapi" "^2.2.2" + "parse5" "^7.1.1" + "saxes" "^6.0.0" + "symbol-tree" "^3.2.4" + "tough-cookie" "^4.1.2" + "w3c-xmlserializer" "^4.0.0" + "webidl-conversions" "^7.0.0" + "whatwg-encoding" "^2.0.0" + "whatwg-mimetype" "^3.0.0" + "whatwg-url" "^11.0.0" + "ws" "^8.11.0" + "xml-name-validator" "^4.0.0" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"jsesc@~0.5.0": + "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + "version" "0.5.0" + +"json-bigint@^1.0.0": + "integrity" "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==" + "resolved" "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "bignumber.js" "^9.0.0" + +"json-buffer@3.0.1": + "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + "version" "3.0.1" + +"json-parse-even-better-errors@^2.3.0": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-parse-even-better-errors@^2.3.1": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-parse-even-better-errors@^3.0.0": + "integrity" "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz" + "version" "3.0.2" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema-traverse@^1.0.0": + "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + "version" "1.0.0" + +"json-schema@0.4.0": + "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + "version" "0.4.0" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"json-stringify-safe@~5.0.1": + "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "version" "5.0.1" + +"json-text-sequence@~0.1.0": + "integrity" "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==" + "resolved" "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz" + "version" "0.1.1" + dependencies: + "delimit-stream" "0.1.0" + +"json5@^1.0.2": + "integrity" "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==" + "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "minimist" "^1.2.0" + +"json5@^2.1.2", "json5@^2.2.2", "json5@^2.2.3": + "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + "version" "2.2.3" + +"jsonc-eslint-parser@^2.1.0": + "integrity" "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==" + "resolved" "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "acorn" "^8.5.0" + "eslint-visitor-keys" "^3.0.0" + "espree" "^9.0.0" + "semver" "^7.3.5" + +"jsonc-parser@3.2.0": + "integrity" "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + "resolved" "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" + "version" "3.2.0" + +"jsonc-parser@3.2.1": + "integrity" "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" + "resolved" "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz" + "version" "3.2.1" + +"jsonc-parser@3.3.1": + "integrity" "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==" + "resolved" "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz" + "version" "3.3.1" + +"jsonfile@^4.0.0": + "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + "version" "4.0.0" + optionalDependencies: + "graceful-fs" "^4.1.6" + +"jsonfile@^6.0.1": + "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" + "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "universalify" "^2.0.0" optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsonpath@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" - integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== - dependencies: - esprima "1.2.2" - static-eval "2.0.2" - underscore "1.12.1" - -jsonwebtoken@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" - integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== - dependencies: - jws "^3.2.2" - lodash "^4.17.21" - ms "^2.1.1" - semver "^7.3.8" - -jsonwebtoken@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" - integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^7.5.4" - -jsprim@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" - integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jwa@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" - integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -jws@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" - integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== - dependencies: - jwa "^2.0.0" - safe-buffer "^5.0.1" - -karma-source-map-support@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz#58526ceccf7e8730e56effd97a4de8d712ac0d6b" - integrity sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A== - dependencies: - source-map-support "^0.5.5" - -katex@^0.16.0, katex@^0.16.9: - version "0.16.10" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.10.tgz#6f81b71ac37ff4ec7556861160f53bc5f058b185" - integrity sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA== - dependencies: - commander "^8.3.0" - -keyv@^4.0.0, keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -khroma@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" - integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kleur@^4.0.3: - version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - -klona@^2.0.4, klona@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - -launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== - dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" - -layout-base@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" - integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== - -lazy-ass@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" - integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== - -lazy-universal-dotenv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz#0b220c264e89a042a37181a4928cdd298af73422" - integrity sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg== - dependencies: - app-root-dir "^1.0.2" - dotenv "^16.0.0" - dotenv-expand "^10.0.0" - -less-loader@11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-11.1.0.tgz#a452384259bdf8e4f6d5fdcc39543609e6313f82" - integrity sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug== - dependencies: - klona "^2.0.4" - -less@4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" - integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== - dependencies: - copy-anything "^2.0.1" - parse-node-version "^1.0.1" - tslib "^2.3.0" + "graceful-fs" "^4.1.6" + +"jsonparse@^1.3.1": + "integrity" "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" + "resolved" "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + "version" "1.3.1" + +"jsonpath@1.1.1": + "integrity" "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==" + "resolved" "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "esprima" "1.2.2" + "static-eval" "2.0.2" + "underscore" "1.12.1" + +"jsonwebtoken@^9.0.0", "jsonwebtoken@9.0.0": + "integrity" "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==" + "resolved" "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz" + "version" "9.0.0" + dependencies: + "jws" "^3.2.2" + "lodash" "^4.17.21" + "ms" "^2.1.1" + "semver" "^7.3.8" + +"jsprim@^2.0.2": + "integrity" "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==" + "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "assert-plus" "1.0.0" + "extsprintf" "1.3.0" + "json-schema" "0.4.0" + "verror" "1.10.0" + +"jwa@^1.4.1": + "integrity" "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==" + "resolved" "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "buffer-equal-constant-time" "1.0.1" + "ecdsa-sig-formatter" "1.0.11" + "safe-buffer" "^5.0.1" + +"jwa@^2.0.0": + "integrity" "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==" + "resolved" "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "buffer-equal-constant-time" "1.0.1" + "ecdsa-sig-formatter" "1.0.11" + "safe-buffer" "^5.0.1" + +"jws@^3.2.2": + "integrity" "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==" + "resolved" "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "jwa" "^1.4.1" + "safe-buffer" "^5.0.1" + +"jws@^4.0.0": + "integrity" "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==" + "resolved" "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "jwa" "^2.0.0" + "safe-buffer" "^5.0.1" + +"karma-source-map-support@1.4.0": + "integrity" "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==" + "resolved" "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "source-map-support" "^0.5.5" + +"katex@^0.16.0", "katex@^0.16.9": + "integrity" "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==" + "resolved" "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz" + "version" "0.16.10" + dependencies: + "commander" "^8.3.0" + +"keygrip@~1.1.0": + "integrity" "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==" + "resolved" "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "tsscmp" "1.0.6" + +"keyv@^4.0.0", "keyv@^4.5.3": + "integrity" "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + "version" "4.5.4" + dependencies: + "json-buffer" "3.0.1" + +"khroma@^2.0.0": + "integrity" "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + "resolved" "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz" + "version" "2.1.0" + +"kind-of@^6.0.2": + "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + "version" "6.0.3" + +"kleur@^3.0.3": + "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + "version" "3.0.3" + +"kleur@^4.0.3": + "integrity" "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" + "resolved" "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" + "version" "4.1.5" + +"klona@^2.0.4", "klona@^2.0.5": + "integrity" "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==" + "resolved" "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" + "version" "2.0.6" + +"koa-compose@^3.0.0": + "integrity" "sha512-8gen2cvKHIZ35eDEik5WOo8zbVp9t4cP8p4hW4uE55waxolLRexKKrqfCpwhGVppnB40jWeF8bZeTVg99eZgPw==" + "resolved" "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "any-promise" "^1.1.0" + +"koa-compose@^4.1.0": + "integrity" "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" + "resolved" "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz" + "version" "4.1.0" + +"koa-convert@^1.2.0": + "integrity" "sha512-K9XqjmEDStGX09v3oxR7t5uPRy0jqJdvodHa6wxWTHrTfDq0WUNnYTOOUZN6g8OM8oZQXprQASbiIXG2Ez8ehA==" + "resolved" "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "co" "^4.6.0" + "koa-compose" "^3.0.0" + +"koa@2.11.0": + "integrity" "sha512-EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA==" + "resolved" "https://registry.npmjs.org/koa/-/koa-2.11.0.tgz" + "version" "2.11.0" + dependencies: + "accepts" "^1.3.5" + "cache-content-type" "^1.0.0" + "content-disposition" "~0.5.2" + "content-type" "^1.0.4" + "cookies" "~0.8.0" + "debug" "~3.1.0" + "delegates" "^1.0.0" + "depd" "^1.1.2" + "destroy" "^1.0.4" + "encodeurl" "^1.0.2" + "error-inject" "^1.0.0" + "escape-html" "^1.0.3" + "fresh" "~0.5.2" + "http-assert" "^1.3.0" + "http-errors" "^1.6.3" + "is-generator-function" "^1.0.7" + "koa-compose" "^4.1.0" + "koa-convert" "^1.2.0" + "on-finished" "^2.3.0" + "only" "~0.0.2" + "parseurl" "^1.3.2" + "statuses" "^1.5.0" + "type-is" "^1.6.16" + "vary" "^1.1.2" + +"launch-editor@^2.6.0", "launch-editor@^2.6.1": + "integrity" "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==" + "resolved" "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz" + "version" "2.8.1" + dependencies: + "picocolors" "^1.0.0" + "shell-quote" "^1.8.1" + +"layout-base@^1.0.0": + "integrity" "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + "resolved" "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz" + "version" "1.0.2" + +"lazy-ass@^1.6.0": + "integrity" "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==" + "resolved" "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz" + "version" "1.6.0" + +"less-loader@11.1.0": + "integrity" "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==" + "resolved" "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz" + "version" "11.1.0" + dependencies: + "klona" "^2.0.4" + +"less-loader@12.2.0": + "integrity" "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==" + "resolved" "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz" + "version" "12.2.0" + +"less@*", "less@^3.5.0 || ^4.0.0", "less@^4.2.0", "less@4.2.0": + "integrity" "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==" + "resolved" "https://registry.npmjs.org/less/-/less-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "copy-anything" "^2.0.1" + "parse-node-version" "^1.0.1" + "tslib" "^2.3.0" optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - needle "^3.1.0" - source-map "~0.6.0" - -less@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" - integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== - dependencies: - copy-anything "^2.0.1" - parse-node-version "^1.0.1" - tslib "^2.3.0" + "errno" "^0.1.1" + "graceful-fs" "^4.1.2" + "image-size" "~0.5.0" + "make-dir" "^2.1.0" + "mime" "^1.4.1" + "needle" "^3.1.0" + "source-map" "~0.6.0" + +"less@4.1.3": + "integrity" "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==" + "resolved" "https://registry.npmjs.org/less/-/less-4.1.3.tgz" + "version" "4.1.3" + dependencies: + "copy-anything" "^2.0.1" + "parse-node-version" "^1.0.1" + "tslib" "^2.3.0" optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - needle "^3.1.0" - source-map "~0.6.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libphonenumber-js@^1.10.53: - version "1.11.1" - resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.11.1.tgz#2596683e1876bfee74082bb49339fe0a85ae34f9" - integrity sha512-Wze1LPwcnzvcKGcRHFGFECTaLzxOtujwpf924difr5zniyYv1C2PiW0419qDR7m8lKDxsImu5mwxFuXhXpjmvw== - -license-webpack-plugin@4.0.2, license-webpack-plugin@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz#1e18442ed20b754b82f1adeff42249b81d11aec6" - integrity sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== - dependencies: - webpack-sources "^3.0.0" - -lilconfig@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" - integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lines-and-columns@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" - integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA== - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + "errno" "^0.1.1" + "graceful-fs" "^4.1.2" + "image-size" "~0.5.0" + "make-dir" "^2.1.0" + "mime" "^1.4.1" + "needle" "^3.1.0" + "source-map" "~0.6.0" + +"leven@^3.1.0": + "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + "version" "3.1.0" + +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"levn@~0.3.0": + "integrity" "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + "version" "0.3.0" + dependencies: + "prelude-ls" "~1.1.2" + "type-check" "~0.3.2" + +"libphonenumber-js@^1.10.53": + "integrity" "sha512-Wze1LPwcnzvcKGcRHFGFECTaLzxOtujwpf924difr5zniyYv1C2PiW0419qDR7m8lKDxsImu5mwxFuXhXpjmvw==" + "resolved" "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.1.tgz" + "version" "1.11.1" + +"license-webpack-plugin@^4.0.2", "license-webpack-plugin@4.0.2": + "integrity" "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==" + "resolved" "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "webpack-sources" "^3.0.0" + +"lilconfig@^3.1.1": + "integrity" "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==" + "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz" + "version" "3.1.1" + +"lines-and-columns@^1.1.6": + "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + "version" "1.2.4" + +"lines-and-columns@~2.0.3": + "integrity" "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz" + "version" "2.0.4" + +"listr-silent-renderer@^1.1.1": + "integrity" "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==" + "resolved" "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz" + "version" "1.1.1" + +"listr-update-renderer@^0.5.0": + "integrity" "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==" + "resolved" "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz" + "version" "0.5.0" + dependencies: + "chalk" "^1.1.3" + "cli-truncate" "^0.2.1" + "elegant-spinner" "^1.0.1" + "figures" "^1.7.0" + "indent-string" "^3.0.0" + "log-symbols" "^1.0.2" + "log-update" "^2.3.0" + "strip-ansi" "^3.0.1" + +"listr-verbose-renderer@^0.5.0": + "integrity" "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==" + "resolved" "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz" + "version" "0.5.0" + dependencies: + "chalk" "^2.4.1" + "cli-cursor" "^2.1.0" + "date-fns" "^1.27.2" + "figures" "^2.0.0" + +"listr@^0.14.2", "listr@^0.14.3": + "integrity" "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==" + "resolved" "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz" + "version" "0.14.3" dependencies: "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -loader-utils@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== - -loader-utils@^2.0.0, loader-utils@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - -lodash-es@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - -lodash.isarguments@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - -lodash.memoize@4.x, lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.once@^4.0.0, lodash.once@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@4.17.21, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ== - dependencies: - chalk "^1.0.0" - -log-symbols@^4.0.0, log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@6.0.0, lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-cache@^10.0.1, lru-cache@^10.2.0: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -luxon@^3.2.1: - version "3.4.4" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" - integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== - -magic-string@0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529" - integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -magic-string@0.30.10: - version "0.30.10" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" - integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - -magic-string@0.30.8: - version "0.30.8" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" - integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== + "is-observable" "^1.1.0" + "is-promise" "^2.1.0" + "is-stream" "^1.1.0" + "listr-silent-renderer" "^1.1.1" + "listr-update-renderer" "^0.5.0" + "listr-verbose-renderer" "^0.5.0" + "p-map" "^2.0.0" + "rxjs" "^6.3.3" + +"listr2@8.2.3": + "integrity" "sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw==" + "resolved" "https://registry.npmjs.org/listr2/-/listr2-8.2.3.tgz" + "version" "8.2.3" + dependencies: + "cli-truncate" "^4.0.0" + "colorette" "^2.0.20" + "eventemitter3" "^5.0.1" + "log-update" "^6.0.0" + "rfdc" "^1.4.1" + "wrap-ansi" "^9.0.0" + +"lmdb@3.0.12": + "integrity" "sha512-JnoEulTgveoC64vlYJ9sufGLuNkk6TcxSYpKxSC9aM42I61jIv3pQH0fgb6qW7HV0+FNqA3g1WCQQYfhfawGoQ==" + "resolved" "https://registry.npmjs.org/lmdb/-/lmdb-3.0.12.tgz" + "version" "3.0.12" + dependencies: + "msgpackr" "^1.10.2" + "node-addon-api" "^6.1.0" + "node-gyp-build-optional-packages" "5.2.2" + "ordered-binary" "^1.4.1" + "weak-lru-cache" "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "3.0.12" + "@lmdb/lmdb-darwin-x64" "3.0.12" + "@lmdb/lmdb-linux-arm" "3.0.12" + "@lmdb/lmdb-linux-arm64" "3.0.12" + "@lmdb/lmdb-linux-x64" "3.0.12" + "@lmdb/lmdb-win32-x64" "3.0.12" + +"loader-runner@^4.2.0": + "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + "version" "4.3.0" + +"loader-utils@^2.0.0": + "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^2.1.2" + +"loader-utils@^2.0.3": + "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^2.1.2" + +"loader-utils@3.3.1": + "integrity" "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz" + "version" "3.3.1" + +"locate-path@^3.0.0": + "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-locate" "^3.0.0" + "path-exists" "^3.0.0" + +"locate-path@^5.0.0": + "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-locate" "^4.1.0" + +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"locate-path@^7.1.0": + "integrity" "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "p-locate" "^6.0.0" + +"lodash-es@^4.17.21": + "integrity" "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + "version" "4.17.21" + +"lodash.clonedeepwith@4.5.0": + "integrity" "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==" + "resolved" "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz" + "version" "4.5.0" + +"lodash.debounce@^4.0.8": + "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + "version" "4.0.8" + +"lodash.defaults@^4.2.0": + "integrity" "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + "resolved" "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz" + "version" "4.2.0" + +"lodash.isarguments@^3.1.0": + "integrity" "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + "resolved" "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz" + "version" "3.1.0" + +"lodash.memoize@^4.1.2", "lodash.memoize@4.x": + "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + "version" "4.1.2" + +"lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"lodash.once@^4.1.1": + "integrity" "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + "resolved" "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + "version" "4.1.1" + +"lodash.uniq@^4.5.0": + "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + "version" "4.5.0" + +"lodash@^4.17.14", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.21", "lodash@4.17.21": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"log-symbols@^1.0.2": + "integrity" "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "chalk" "^1.0.0" + +"log-symbols@^4.0.0", "log-symbols@^4.1.0": + "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "chalk" "^4.1.0" + "is-unicode-supported" "^0.1.0" + +"log-update@^2.3.0": + "integrity" "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==" + "resolved" "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "ansi-escapes" "^3.0.0" + "cli-cursor" "^2.0.0" + "wrap-ansi" "^3.0.1" + +"log-update@^6.0.0": + "integrity" "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==" + "resolved" "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "ansi-escapes" "^7.0.0" + "cli-cursor" "^5.0.0" + "slice-ansi" "^7.1.0" + "strip-ansi" "^7.1.0" + "wrap-ansi" "^9.0.0" + +"log4js@6.9.1": + "integrity" "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==" + "resolved" "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz" + "version" "6.9.1" + dependencies: + "date-format" "^4.0.14" + "debug" "^4.3.4" + "flatted" "^3.2.7" + "rfdc" "^1.3.0" + "streamroller" "^3.1.5" + +"long-timeout@0.1.1": + "integrity" "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==" + "resolved" "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz" + "version" "0.1.1" + +"loose-envify@^1.1.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lower-case@^2.0.2": + "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" + "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "tslib" "^2.0.3" + +"lowercase-keys@^2.0.0": + "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + "version" "2.0.0" + +"lru-cache@^10.0.1": + "integrity" "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz" + "version" "10.2.2" + +"lru-cache@^10.2.0": + "integrity" "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz" + "version" "10.2.2" + +"lru-cache@^5.1.1": + "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "yallist" "^3.0.2" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"lru-cache@6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"luxon@^3.2.1": + "integrity" "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==" + "resolved" "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz" + "version" "3.4.4" + +"magic-string@^0.30.5", "magic-string@~0.30.2", "magic-string@0.30.10": + "integrity" "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==" + "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz" + "version" "0.30.10" dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" -magic-string@^0.30.5, magic-string@~0.30.2: - version "0.30.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" - integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== +"magic-string@0.30.0": + "integrity" "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==" + "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz" + "version" "0.30.0" dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" + "@jridgewell/sourcemap-codec" "^1.4.13" -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== +"make-dir@^2.0.0", "make-dir@^2.1.0": + "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + "version" "2.1.0" dependencies: - pify "^4.0.1" - semver "^5.6.0" + "pify" "^4.0.1" + "semver" "^5.6.0" -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== +"make-dir@^3.0.2": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" dependencies: - semver "^6.0.0" + "semver" "^6.0.0" -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== +"make-dir@^4.0.0": + "integrity" "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + "version" "4.0.0" dependencies: - semver "^7.5.3" + "semver" "^7.5.3" -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +"make-error@^1.1.1", "make-error@1.x": + "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + "version" "1.3.6" -make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" - integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== +"make-fetch-happen@^13.0.0", "make-fetch-happen@^13.0.1": + "integrity" "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==" + "resolved" "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz" + "version" "13.0.1" dependencies: "@npmcli/agent" "^2.0.0" - cacache "^18.0.0" - http-cache-semantics "^4.1.1" - is-lambda "^1.0.1" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - proc-log "^4.2.0" - promise-retry "^2.0.1" - ssri "^10.0.0" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-or-similar@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" - integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== - -markdown-to-jsx@^7.1.8: - version "7.4.7" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz#740ee7ec933865ef5cc683a0992797685a75e2ee" - integrity sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg== - -marked@9.1.6: - version "9.1.6" - resolved "https://registry.yarnpkg.com/marked/-/marked-9.1.6.tgz#5d2a3f8180abfbc5d62e3258a38a1c19c0381695" - integrity sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q== - -mdast-util-definitions@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" - integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== - dependencies: - unist-util-visit "^2.0.0" - -mdast-util-from-markdown@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0" - integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== + "cacache" "^18.0.0" + "http-cache-semantics" "^4.1.1" + "is-lambda" "^1.0.1" + "minipass" "^7.0.2" + "minipass-fetch" "^3.0.0" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "negotiator" "^0.6.3" + "proc-log" "^4.2.0" + "promise-retry" "^2.0.1" + "ssri" "^10.0.0" + +"makeerror@1.0.12": + "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" + "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + "version" "1.0.12" + dependencies: + "tmpl" "1.0.5" + +"map-or-similar@^1.5.0": + "integrity" "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" + "resolved" "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz" + "version" "1.5.0" + +"markdown-to-jsx@^7.4.5": + "integrity" "sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==" + "resolved" "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz" + "version" "7.5.0" + +"marked@>= 9.0.0 < 13.0.0", "marked@12.0.2": + "integrity" "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==" + "resolved" "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz" + "version" "12.0.2" + +"mdast-util-from-markdown@^1.3.0": + "integrity" "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==" + "resolved" "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz" + "version" "1.3.1" dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" - decode-named-character-reference "^1.0.0" - mdast-util-to-string "^3.1.0" - micromark "^3.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-decode-string "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - unist-util-stringify-position "^3.0.0" - uvu "^0.5.0" - -mdast-util-to-string@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" - integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== - -mdast-util-to-string@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" - integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== + "decode-named-character-reference" "^1.0.0" + "mdast-util-to-string" "^3.1.0" + "micromark" "^3.0.0" + "micromark-util-decode-numeric-character-reference" "^1.0.0" + "micromark-util-decode-string" "^1.0.0" + "micromark-util-normalize-identifier" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.0" + "unist-util-stringify-position" "^3.0.0" + "uvu" "^0.5.0" + +"mdast-util-to-string@^3.1.0": + "integrity" "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==" + "resolved" "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz" + "version" "3.2.0" dependencies: "@types/mdast" "^3.0.0" -mdn-data@2.0.28: - version "2.0.28" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" - integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== - -mdn-data@2.0.30: - version "2.0.30" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" - integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== +"mdn-data@2.0.28": + "integrity" "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" + "version" "2.0.28" + +"mdn-data@2.0.30": + "integrity" "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" + "version" "2.0.30" + +"media-typer@0.3.0": + "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "version" "0.3.0" + +"memfs@^3.4.1", "memfs@^3.4.12", "memfs@^3.4.3": + "integrity" "sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ==" + "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "fs-monkey" "^1.0.4" + +"memfs@^4.6.0": + "integrity" "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==" + "resolved" "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz" + "version" "4.11.1" + dependencies: + "@jsonjoy.com/json-pack" "^1.0.3" + "@jsonjoy.com/util" "^1.3.0" + "tree-dump" "^1.0.1" + "tslib" "^2.0.0" + +"memoizerific@^1.11.3": + "integrity" "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==" + "resolved" "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz" + "version" "1.11.3" + dependencies: + "map-or-similar" "^1.5.0" + +"merge-descriptors@1.0.1": + "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + "version" "1.0.1" + +"merge-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" + +"merge2@^1.3.0", "merge2@^1.4.1": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"mermaid@^10.6.0": + "integrity" "sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==" + "resolved" "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz" + "version" "10.9.0" + dependencies: + "@braintree/sanitize-url" "^6.0.1" + "@types/d3-scale" "^4.0.3" + "@types/d3-scale-chromatic" "^3.0.0" + "cytoscape" "^3.28.1" + "cytoscape-cose-bilkent" "^4.1.0" + "d3" "^7.4.0" + "d3-sankey" "^0.12.3" + "dagre-d3-es" "7.0.10" + "dayjs" "^1.11.7" + "dompurify" "^3.0.5" + "elkjs" "^0.9.0" + "katex" "^0.16.9" + "khroma" "^2.0.0" + "lodash-es" "^4.17.21" + "mdast-util-from-markdown" "^1.3.0" + "non-layered-tidy-tree-layout" "^2.0.2" + "stylis" "^4.1.3" + "ts-dedent" "^2.2.0" + "uuid" "^9.0.0" + "web-worker" "^1.2.0" + +"methods@~1.1.2": + "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "version" "1.1.2" + +"micromark-core-commonmark@^1.0.1": + "integrity" "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==" + "resolved" "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "decode-named-character-reference" "^1.0.0" + "micromark-factory-destination" "^1.0.0" + "micromark-factory-label" "^1.0.0" + "micromark-factory-space" "^1.0.0" + "micromark-factory-title" "^1.0.0" + "micromark-factory-whitespace" "^1.0.0" + "micromark-util-character" "^1.0.0" + "micromark-util-chunked" "^1.0.0" + "micromark-util-classify-character" "^1.0.0" + "micromark-util-html-tag-name" "^1.0.0" + "micromark-util-normalize-identifier" "^1.0.0" + "micromark-util-resolve-all" "^1.0.0" + "micromark-util-subtokenize" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.1" + "uvu" "^0.5.0" + +"micromark-factory-destination@^1.0.0": + "integrity" "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==" + "resolved" "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-character" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.0" + +"micromark-factory-label@^1.0.0": + "integrity" "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==" + "resolved" "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-character" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.0" + "uvu" "^0.5.0" + +"micromark-factory-space@^1.0.0": + "integrity" "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==" + "resolved" "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-character" "^1.0.0" + "micromark-util-types" "^1.0.0" + +"micromark-factory-title@^1.0.0": + "integrity" "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==" + "resolved" "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-factory-space" "^1.0.0" + "micromark-util-character" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.0" + +"micromark-factory-whitespace@^1.0.0": + "integrity" "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==" + "resolved" "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-factory-space" "^1.0.0" + "micromark-util-character" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.0" + +"micromark-util-character@^1.0.0": + "integrity" "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==" + "resolved" "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.0" + +"micromark-util-chunked@^1.0.0": + "integrity" "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==" + "resolved" "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-symbol" "^1.0.0" + +"micromark-util-classify-character@^1.0.0": + "integrity" "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==" + "resolved" "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-character" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.0" + +"micromark-util-combine-extensions@^1.0.0": + "integrity" "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==" + "resolved" "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-chunked" "^1.0.0" + "micromark-util-types" "^1.0.0" + +"micromark-util-decode-numeric-character-reference@^1.0.0": + "integrity" "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==" + "resolved" "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-symbol" "^1.0.0" + +"micromark-util-decode-string@^1.0.0": + "integrity" "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==" + "resolved" "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "decode-named-character-reference" "^1.0.0" + "micromark-util-character" "^1.0.0" + "micromark-util-decode-numeric-character-reference" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + +"micromark-util-encode@^1.0.0": + "integrity" "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==" + "resolved" "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz" + "version" "1.1.0" + +"micromark-util-html-tag-name@^1.0.0": + "integrity" "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==" + "resolved" "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz" + "version" "1.2.0" + +"micromark-util-normalize-identifier@^1.0.0": + "integrity" "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==" + "resolved" "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-symbol" "^1.0.0" + +"micromark-util-resolve-all@^1.0.0": + "integrity" "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==" + "resolved" "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-types" "^1.0.0" + +"micromark-util-sanitize-uri@^1.0.0": + "integrity" "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==" + "resolved" "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "micromark-util-character" "^1.0.0" + "micromark-util-encode" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + +"micromark-util-subtokenize@^1.0.0": + "integrity" "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==" + "resolved" "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "micromark-util-chunked" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.0" + "uvu" "^0.5.0" + +"micromark-util-symbol@^1.0.0": + "integrity" "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==" + "resolved" "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz" + "version" "1.1.0" + +"micromark-util-types@^1.0.0", "micromark-util-types@^1.0.1": + "integrity" "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==" + "resolved" "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz" + "version" "1.1.0" + +"micromark@^3.0.0": + "integrity" "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==" + "resolved" "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "@types/debug" "^4.0.0" + "debug" "^4.0.0" + "decode-named-character-reference" "^1.0.0" + "micromark-core-commonmark" "^1.0.1" + "micromark-factory-space" "^1.0.0" + "micromark-util-character" "^1.0.0" + "micromark-util-chunked" "^1.0.0" + "micromark-util-combine-extensions" "^1.0.0" + "micromark-util-decode-numeric-character-reference" "^1.0.0" + "micromark-util-encode" "^1.0.0" + "micromark-util-normalize-identifier" "^1.0.0" + "micromark-util-resolve-all" "^1.0.0" + "micromark-util-sanitize-uri" "^1.0.0" + "micromark-util-subtokenize" "^1.0.0" + "micromark-util-symbol" "^1.0.0" + "micromark-util-types" "^1.0.1" + "uvu" "^0.5.0" + +"micromatch@^4.0.0", "micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5": + "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "braces" "^3.0.2" + "picomatch" "^2.3.1" + +"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": + "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + "version" "1.52.0" + +"mime-types@^2.1.12", "mime-types@^2.1.18", "mime-types@^2.1.27", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.19", "mime-types@~2.1.24", "mime-types@~2.1.34": + "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + "version" "2.1.35" + dependencies: + "mime-db" "1.52.0" + +"mime@^1.4.1", "mime@^1.6.0", "mime@1.6.0": + "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + "version" "1.6.0" + +"mimic-fn@^1.0.0": + "integrity" "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" + "version" "1.2.0" + +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" + +"mimic-fn@^4.0.0": + "integrity" "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + "version" "4.0.0" + +"mimic-function@^5.0.0": + "integrity" "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==" + "resolved" "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz" + "version" "5.0.1" + +"mimic-response@^1.0.0": + "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + "version" "1.0.1" + +"mimic-response@^3.1.0": + "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + "version" "3.1.0" + +"mini-css-extract-plugin@~2.4.7": + "integrity" "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==" + "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz" + "version" "2.4.7" + dependencies: + "schema-utils" "^4.0.0" + +"mini-css-extract-plugin@2.9.0": + "integrity" "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==" + "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz" + "version" "2.9.0" + dependencies: + "schema-utils" "^4.0.0" + "tapable" "^2.2.1" + +"minimalistic-assert@^1.0.0": + "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + "version" "1.0.1" + +"minimatch@^3.0.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimatch@^3.0.4": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimatch@^3.0.5": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimatch@^3.1.1": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" -memfs@^3.4.1, memfs@^3.4.12, memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== +"minimatch@^3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" dependencies: - fs-monkey "^1.0.4" + "brace-expansion" "^1.1.7" -memoizerific@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" - integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== +"minimatch@^5.0.1": + "integrity" "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + "version" "5.1.6" dependencies: - map-or-similar "^1.5.0" + "brace-expansion" "^2.0.1" -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +"minimatch@^9.0.0", "minimatch@^9.0.1", "minimatch@9.0.3": + "integrity" "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" + "version" "9.0.3" + dependencies: + "brace-expansion" "^2.0.1" -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +"minimatch@^9.0.4": + "integrity" "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz" + "version" "9.0.4" + dependencies: + "brace-expansion" "^2.0.1" -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +"minimist@^1.2.0", "minimist@^1.2.3", "minimist@^1.2.5", "minimist@^1.2.6": + "integrity" "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + "version" "1.2.8" -mermaid@^10.6.0: - version "10.9.0" - resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.9.0.tgz#4d1272fbe434bd8f3c2c150554dc8a23a9bf9361" - integrity sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g== - dependencies: - "@braintree/sanitize-url" "^6.0.1" - "@types/d3-scale" "^4.0.3" - "@types/d3-scale-chromatic" "^3.0.0" - cytoscape "^3.28.1" - cytoscape-cose-bilkent "^4.1.0" - d3 "^7.4.0" - d3-sankey "^0.12.3" - dagre-d3-es "7.0.10" - dayjs "^1.11.7" - dompurify "^3.0.5" - elkjs "^0.9.0" - katex "^0.16.9" - khroma "^2.0.0" - lodash-es "^4.17.21" - mdast-util-from-markdown "^1.3.0" - non-layered-tidy-tree-layout "^2.0.2" - stylis "^4.1.3" - ts-dedent "^2.2.0" - uuid "^9.0.0" - web-worker "^1.2.0" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromark-core-commonmark@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" - integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-factory-destination "^1.0.0" - micromark-factory-label "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-factory-title "^1.0.0" - micromark-factory-whitespace "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-classify-character "^1.0.0" - micromark-util-html-tag-name "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - uvu "^0.5.0" - -micromark-factory-destination@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f" - integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-label@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68" - integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - -micromark-factory-space@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" - integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-title@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1" - integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-whitespace@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705" - integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-character@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" - integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== - dependencies: - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-chunked@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b" - integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== - dependencies: - micromark-util-symbol "^1.0.0" - -micromark-util-classify-character@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d" - integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-combine-extensions@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84" - integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== - dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-util-decode-numeric-character-reference@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6" - integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== - dependencies: - micromark-util-symbol "^1.0.0" - -micromark-util-decode-string@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c" - integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-symbol "^1.0.0" - -micromark-util-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5" - integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== - -micromark-util-html-tag-name@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588" - integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== - -micromark-util-normalize-identifier@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7" - integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== - dependencies: - micromark-util-symbol "^1.0.0" - -micromark-util-resolve-all@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188" - integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== - dependencies: - micromark-util-types "^1.0.0" - -micromark-util-sanitize-uri@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d" - integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-symbol "^1.0.0" - -micromark-util-subtokenize@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1" - integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== - dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - -micromark-util-symbol@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" - integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== - -micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" - integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== - -micromark@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9" - integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== +"minipass-collect@^2.0.1": + "integrity" "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==" + "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz" + "version" "2.0.1" dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - micromark-core-commonmark "^1.0.1" - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-combine-extensions "^1.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-sanitize-uri "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - uvu "^0.5.0" - -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0, mime@^1.4.1, mime@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.0.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -mini-css-extract-plugin@2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz#75245f3f30ce3a56dbdd478084df6fe475f02dc7" - integrity sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA== - dependencies: - schema-utils "^4.0.0" - tapable "^2.2.1" - -mini-css-extract-plugin@~2.4.7: - version "2.4.7" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz#b9f4c4f4d727c7a3cd52a11773bb739f00177fac" - integrity sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg== - dependencies: - schema-utils "^4.0.0" - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass-collect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" - integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + "minipass" "^7.0.3" + +"minipass-fetch@^3.0.0": + "integrity" "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==" + "resolved" "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz" + "version" "3.0.5" dependencies: - minipass "^7.0.3" - -minipass-fetch@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" - integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== - dependencies: - minipass "^7.0.3" - minipass-sized "^1.0.3" - minizlib "^2.1.2" + "minipass" "^7.0.3" + "minipass-sized" "^1.0.3" + "minizlib" "^2.1.2" optionalDependencies: - encoding "^0.1.13" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4: - version "7.1.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.0.tgz#b545f84af94e567386770159302ca113469c80b8" - integrity sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig== - -minizlib@^2.1.1, minizlib@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mkdirp@^0.5.4, mkdirp@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moment@^2.27.0: - version "2.30.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" - integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== - -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -mrmime@2.0.0, mrmime@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" - integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -ms@3.0.0-canary.1: - version "3.0.0-canary.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-3.0.0-canary.1.tgz#c7b34fbce381492fd0b345d1cf56e14d67b77b80" - integrity sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g== - -msgpackr-extract@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" - integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== - dependencies: - node-gyp-build-optional-packages "5.0.7" + "encoding" "^0.1.13" + +"minipass-flush@^1.0.5": + "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" + "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "minipass" "^3.0.0" + +"minipass-pipeline@^1.2.4": + "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" + "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + "version" "1.2.4" + dependencies: + "minipass" "^3.0.0" + +"minipass-sized@^1.0.3": + "integrity" "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==" + "resolved" "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "minipass" "^3.0.0" + +"minipass@^3.0.0": + "integrity" "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + "version" "3.3.6" + dependencies: + "yallist" "^4.0.0" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", "minipass@^7.0.2", "minipass@^7.0.3", "minipass@^7.0.4", "minipass@^7.1.2": + "integrity" "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + "version" "7.1.2" + +"minipass@^5.0.0": + "integrity" "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + "version" "5.0.0" + +"minizlib@^2.1.1", "minizlib@^2.1.2": + "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" + "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + "version" "2.1.2" + dependencies: + "minipass" "^3.0.0" + "yallist" "^4.0.0" + +"mkdirp@^0.5.3", "mkdirp@^0.5.4", "mkdirp@^0.5.6": + "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + "version" "0.5.6" + dependencies: + "minimist" "^1.2.6" + +"mkdirp@^1.0.3": + "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + "version" "1.0.4" + +"moment@^2.27.0": + "integrity" "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + "resolved" "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz" + "version" "2.30.1" + +"mri@^1.1.0": + "integrity" "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + "resolved" "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" + "version" "1.2.0" + +"mrmime@^2.0.0", "mrmime@2.0.0": + "integrity" "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==" + "resolved" "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz" + "version" "2.0.0" + +"ms@^2.1.1": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"ms@2.0.0": + "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"ms@2.1.3": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"ms@3.0.0-canary.1": + "integrity" "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==" + "resolved" "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz" + "version" "3.0.0-canary.1" + +"msgpackr-extract@^3.0.2": + "integrity" "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==" + "resolved" "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "node-gyp-build-optional-packages" "5.0.7" optionalDependencies: "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" @@ -14530,2498 +12601,2461 @@ msgpackr-extract@^3.0.2: "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" -msgpackr@^1.5.2: - version "1.10.1" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" - integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== +"msgpackr@^1.10.2", "msgpackr@^1.5.2": + "integrity" "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==" + "resolved" "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz" + "version" "1.11.0" optionalDependencies: - msgpackr-extract "^3.0.2" - -multer@1.4.4-lts.1: - version "1.4.4-lts.1" - resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.4-lts.1.tgz#24100f701a4611211cfae94ae16ea39bb314e04d" - integrity sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg== - dependencies: - append-field "^1.0.0" - busboy "^1.0.0" - concat-stream "^1.5.2" - mkdirp "^0.5.4" - object-assign "^4.1.1" - type-is "^1.6.4" - xtend "^4.0.0" - -multicast-dns@^7.2.5: - version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" - integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== - dependencies: - dns-packet "^5.2.2" - thunky "^1.0.2" - -mute-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== - -nanoid@^3.3.1, nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -needle@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" - integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== - dependencies: - iconv-lite "^0.6.3" - sax "^1.2.4" - -negotiator@0.6.3, negotiator@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0, neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -ng-extract-i18n-merge@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.12.0.tgz#857db1c035db8b1d29b6d7cd91ef94f824f41bfb" - integrity sha512-ohzt7WLraXS0PVPEohYK0f/TxzGu/1vOYeukncd8r6sJybrSUG/dm/lpxC4Ozkhq4rhKEHRPRTKA5x59qjIfjw== + "msgpackr-extract" "^3.0.2" + +"multer@1.4.4-lts.1": + "integrity" "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==" + "resolved" "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz" + "version" "1.4.4-lts.1" + dependencies: + "append-field" "^1.0.0" + "busboy" "^1.0.0" + "concat-stream" "^1.5.2" + "mkdirp" "^0.5.4" + "object-assign" "^4.1.1" + "type-is" "^1.6.4" + "xtend" "^4.0.0" + +"multicast-dns@^7.2.5": + "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" + "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + "version" "7.2.5" + dependencies: + "dns-packet" "^5.2.2" + "thunky" "^1.0.2" + +"mute-stream@^1.0.0": + "integrity" "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==" + "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz" + "version" "1.0.0" + +"nanoid@^3.3.7": + "integrity" "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" + "version" "3.3.7" + +"natural-compare@^1.4.0": + "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"needle@^3.1.0": + "integrity" "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==" + "resolved" "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz" + "version" "3.3.1" + dependencies: + "iconv-lite" "^0.6.3" + "sax" "^1.2.4" + +"negotiator@^0.6.3", "negotiator@0.6.3": + "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + "version" "0.6.3" + +"neo-async@^2.5.0", "neo-async@^2.6.2": + "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + "version" "2.6.2" + +"ng-extract-i18n-merge@2.12.0": + "integrity" "sha512-ohzt7WLraXS0PVPEohYK0f/TxzGu/1vOYeukncd8r6sJybrSUG/dm/lpxC4Ozkhq4rhKEHRPRTKA5x59qjIfjw==" + "resolved" "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.12.0.tgz" + "version" "2.12.0" dependencies: "@angular-devkit/architect" "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0" "@angular-devkit/core" "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" "@angular-devkit/schematics" "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" "@schematics/angular" "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" - xmldoc "^1.1.3" + "xmldoc" "^1.1.3" -ngx-device-detector@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ngx-device-detector/-/ngx-device-detector-5.0.1.tgz#da511f0393fff7dab45a3dfa72d40981c5e81e3c" - integrity sha512-hVKaGzyXzy6zeliYyN7runz3eOOsh3tmZ8A6P5MSpHIjVjSx3pUJcobFTKNyHGn/zGS4JFWuhSSb7QmNwmqK9w== +"ngx-device-detector@8.0.0": + "integrity" "sha512-ik6EwUKnlN+xwoWHzyJp5+V+QRWYrmpTqAvRwa16xBnAVd7/i3jElN7MZjs/InwcYz7AW3XcSNeu+XRvtHgb9w==" + "resolved" "https://registry.npmjs.org/ngx-device-detector/-/ngx-device-detector-8.0.0.tgz" + "version" "8.0.0" dependencies: - tslib "^2.0.0" + "tslib" "^2.0.0" -ngx-markdown@17.1.1: - version "17.1.1" - resolved "https://registry.yarnpkg.com/ngx-markdown/-/ngx-markdown-17.1.1.tgz#6e9c34fe8d470621b4609d68e8a403efb72b4e66" - integrity sha512-BGNWGJ6tmfPx+ScZFq5qeGLgWJwsakjScZ2e+oUzm+97DAHpIHSl8gptNZvZgRhOiFdjLcKBcuY2Rz8WB6J6UQ== +"ngx-markdown@18.0.0": + "integrity" "sha512-sFR9dIOKobdhNKZTlCrX3RmpoAhZ7k3T9h7oWJP676Oe9BsoxuAYZKJmFDT20vrY6xmFD3WtLJDZR7rNRLf6Uw==" + "resolved" "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-18.0.0.tgz" + "version" "18.0.0" dependencies: - tslib "^2.3.0" + "tslib" "^2.3.0" optionalDependencies: - clipboard "^2.0.11" - emoji-toolkit "^8.0.0" - katex "^0.16.0" - mermaid "^10.6.0" - prismjs "^1.28.0" - -ngx-skeleton-loader@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/ngx-skeleton-loader/-/ngx-skeleton-loader-7.0.0.tgz#3b1325025a7208a20f3a0fdba6e578532a09cfcd" - integrity sha512-myc6GNcNhyksZrimIFkCxeihi0kQ8JhQVZiGbtiIv4gYrnnRk5nXbs3kYitK8E8OstHG+jlsmRofqGBxuIsYTA== - dependencies: - perf-marks "^1.13.4" - tslib "^2.0.0" - -ngx-stripe@15.5.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/ngx-stripe/-/ngx-stripe-15.5.0.tgz#b05fc1cf9f55bb5e7f307ac5cfdf29807a2f48a9" - integrity sha512-Ut3JANfxSzl/4qy+pokHOXGVITgNSlSMv7XGN2Y4tPDk6BVUD9SSl/3VuXW9UdbKAmX0XS68nRACiKCOSet5zw== - dependencies: - tslib "^2.3.0" - -nice-napi@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b" - integrity sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA== - dependencies: - node-addon-api "^3.0.0" - node-gyp-build "^4.2.2" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-abort-controller@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" - integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== - -node-addon-api@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-fetch-native@^1.6.3: - version "1.6.4" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" - integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== - -node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-forge@^1, node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - -node-gyp-build-optional-packages@5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" - integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== - -node-gyp-build@^4.2.2: - version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" - integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== - -node-gyp@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.1.0.tgz#75e6f223f2acb4026866c26a2ead6aab75a8ca7e" - integrity sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA== - dependencies: - env-paths "^2.2.0" - exponential-backoff "^3.1.1" - glob "^10.3.10" - graceful-fs "^4.2.6" - make-fetch-happen "^13.0.0" - nopt "^7.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - tar "^6.1.2" - which "^4.0.0" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-machine-id@1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" - integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -non-layered-tidy-tree-layout@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" - integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== - -nopt@^7.0.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" - integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== - dependencies: - abbrev "^2.0.0" - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.1.tgz#fa69e9452210f0fabf4d79ee08d0c2870c51ed88" - integrity sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ== - dependencies: - hosted-git-info "^7.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-bundled@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" - integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== - dependencies: - npm-normalize-package-bin "^3.0.0" - -npm-install-checks@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" - integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" - integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== - -npm-package-arg@11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.1.tgz#f208b0022c29240a1c532a449bdde3f0a4708ebc" - integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-package-arg@^11.0.0: - version "11.0.2" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" - integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^4.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-packlist@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" - integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== - dependencies: - ignore-walk "^6.0.4" - -npm-pick-manifest@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz#f87a4c134504a2c7931f2bb8733126e3c3bb7e8f" - integrity sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^11.0.0" - semver "^7.3.5" - -npm-pick-manifest@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz#c90658bd726fe5bca9d2869f3e99359b8fcda046" - integrity sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^11.0.0" - semver "^7.3.5" - -npm-registry-fetch@^16.0.0: - version "16.2.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz#c367df2d770f915da069ff19fd31762f4bca3ef1" - integrity sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA== - dependencies: - "@npmcli/redact" "^1.1.0" - make-fetch-happen "^13.0.0" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^11.0.0" - proc-log "^4.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -nwsapi@^2.2.2: - version "2.2.9" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.9.tgz#7f3303218372db2e9f27c27766bcfc59ae7e61c6" - integrity sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg== - -nx@19.0.5: - version "19.0.5" - resolved "https://registry.yarnpkg.com/nx/-/nx-19.0.5.tgz#96f7bba72a3695d0a5634ddcfc598d4504dcded1" - integrity sha512-sZ/0eCoABfUF05gbw551jnkDWshXNlZleFNTgusQrlNTQC57opOBvXbNMYzFNGv6+9L1QsFiJJf8eP+CKWCgeg== - dependencies: - "@nrwl/tao" "19.0.5" + "clipboard" "^2.0.11" + "emoji-toolkit" "^8.0.0" + "katex" "^0.16.0" + "mermaid" "^10.6.0" + "prismjs" "^1.28.0" + +"ngx-skeleton-loader@7.0.0": + "integrity" "sha512-myc6GNcNhyksZrimIFkCxeihi0kQ8JhQVZiGbtiIv4gYrnnRk5nXbs3kYitK8E8OstHG+jlsmRofqGBxuIsYTA==" + "resolved" "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "perf-marks" "^1.13.4" + "tslib" "^2.0.0" + +"ngx-stripe@18.0.0": + "integrity" "sha512-AT67vLeqEUDMnK5TfEaorumYJyOWqecbrh/1UWNtN8vF6Yzb0L/Dty3ANAa/QQi0OvBg6gXrudrhEnT8pT5lng==" + "resolved" "https://registry.npmjs.org/ngx-stripe/-/ngx-stripe-18.0.0.tgz" + "version" "18.0.0" + dependencies: + "tslib" "^2.3.0" + +"no-case@^3.0.4": + "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" + "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "lower-case" "^2.0.2" + "tslib" "^2.0.3" + +"node-abort-controller@^3.0.1": + "integrity" "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" + "resolved" "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + "version" "3.1.1" + +"node-addon-api@^6.1.0": + "integrity" "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz" + "version" "6.1.0" + +"node-dir@^0.1.17": + "integrity" "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==" + "resolved" "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + "version" "0.1.17" + dependencies: + "minimatch" "^3.0.2" + +"node-fetch-native@^1.6.3": + "integrity" "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==" + "resolved" "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz" + "version" "1.6.4" + +"node-fetch@^2.6.1", "node-fetch@^2.6.12", "node-fetch@^2.6.7": + "integrity" "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + "version" "2.7.0" + dependencies: + "whatwg-url" "^5.0.0" + +"node-forge@^1", "node-forge@^1.3.1": + "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + "version" "1.3.1" + +"node-gyp-build-optional-packages@5.0.7": + "integrity" "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==" + "resolved" "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz" + "version" "5.0.7" + +"node-gyp-build-optional-packages@5.2.2": + "integrity" "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==" + "resolved" "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz" + "version" "5.2.2" + dependencies: + "detect-libc" "^2.0.1" + +"node-gyp@^10.0.0": + "integrity" "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==" + "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "env-paths" "^2.2.0" + "exponential-backoff" "^3.1.1" + "glob" "^10.3.10" + "graceful-fs" "^4.2.6" + "make-fetch-happen" "^13.0.0" + "nopt" "^7.0.0" + "proc-log" "^3.0.0" + "semver" "^7.3.5" + "tar" "^6.1.2" + "which" "^4.0.0" + +"node-int64@^0.4.0": + "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + "version" "0.4.0" + +"node-machine-id@1.1.12": + "integrity" "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==" + "resolved" "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz" + "version" "1.1.12" + +"node-releases@^2.0.18": + "integrity" "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz" + "version" "2.0.18" + +"node-schedule@2.1.1": + "integrity" "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==" + "resolved" "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "cron-parser" "^4.2.0" + "long-timeout" "0.1.1" + "sorted-array-functions" "^1.3.0" + +"non-layered-tidy-tree-layout@^2.0.2": + "integrity" "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + "resolved" "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz" + "version" "2.0.2" + +"nopt@^7.0.0": + "integrity" "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz" + "version" "7.2.1" + dependencies: + "abbrev" "^2.0.0" + +"normalize-package-data@^6.0.0": + "integrity" "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "hosted-git-info" "^7.0.0" + "is-core-module" "^2.8.1" + "semver" "^7.3.5" + "validate-npm-package-license" "^3.0.4" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"normalize-range@^0.1.2": + "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + "version" "0.1.2" + +"normalize-url@^6.0.1": + "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + "version" "6.1.0" + +"npm-bundled@^3.0.0": + "integrity" "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==" + "resolved" "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "npm-normalize-package-bin" "^3.0.0" + +"npm-install-checks@^6.0.0": + "integrity" "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==" + "resolved" "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz" + "version" "6.3.0" + dependencies: + "semver" "^7.1.1" + +"npm-normalize-package-bin@^3.0.0": + "integrity" "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==" + "resolved" "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz" + "version" "3.0.1" + +"npm-package-arg@^11.0.0", "npm-package-arg@11.0.2": + "integrity" "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==" + "resolved" "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz" + "version" "11.0.2" + dependencies: + "hosted-git-info" "^7.0.0" + "proc-log" "^4.0.0" + "semver" "^7.3.5" + "validate-npm-package-name" "^5.0.0" + +"npm-package-arg@11.0.1": + "integrity" "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==" + "resolved" "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz" + "version" "11.0.1" + dependencies: + "hosted-git-info" "^7.0.0" + "proc-log" "^3.0.0" + "semver" "^7.3.5" + "validate-npm-package-name" "^5.0.0" + +"npm-packlist@^8.0.0": + "integrity" "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==" + "resolved" "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz" + "version" "8.0.2" + dependencies: + "ignore-walk" "^6.0.4" + +"npm-pick-manifest@^9.0.0", "npm-pick-manifest@9.0.1": + "integrity" "sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==" + "resolved" "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz" + "version" "9.0.1" + dependencies: + "npm-install-checks" "^6.0.0" + "npm-normalize-package-bin" "^3.0.0" + "npm-package-arg" "^11.0.0" + "semver" "^7.3.5" + +"npm-registry-fetch@^17.0.0": + "integrity" "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==" + "resolved" "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz" + "version" "17.1.0" + dependencies: + "@npmcli/redact" "^2.0.0" + "jsonparse" "^1.3.1" + "make-fetch-happen" "^13.0.0" + "minipass" "^7.0.2" + "minipass-fetch" "^3.0.0" + "minizlib" "^2.1.2" + "npm-package-arg" "^11.0.0" + "proc-log" "^4.0.0" + +"npm-run-path@^4.0.0", "npm-run-path@^4.0.1": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "path-key" "^3.0.0" + +"npm-run-path@^5.1.0": + "integrity" "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "path-key" "^4.0.0" + +"nth-check@^2.0.1": + "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" + "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "boolbase" "^1.0.0" + +"number-is-nan@^1.0.0": + "integrity" "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" + "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + "version" "1.0.1" + +"nwsapi@^2.2.2": + "integrity" "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==" + "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz" + "version" "2.2.9" + +"nx@>= 17 <= 20", "nx@19.5.6": + "integrity" "sha512-qjP17aa5ViXSpo0bDgJ7O3b8EY/0+PbX7ZIKvG1g6qasohtfM1y4Sx2bbSow0zCKU0+r1LnR53Q0lyX4OOgtUg==" + "resolved" "https://registry.npmjs.org/nx/-/nx-19.5.6.tgz" + "version" "19.5.6" + dependencies: + "@napi-rs/wasm-runtime" "0.2.4" + "@nrwl/tao" "19.5.6" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" - axios "^1.6.0" - chalk "^4.1.0" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^8.0.1" - dotenv "~16.3.1" - dotenv-expand "~10.0.0" - enquirer "~2.3.6" - figures "3.2.0" - flat "^5.0.2" - fs-extra "^11.1.0" - ignore "^5.0.4" - jest-diff "^29.4.1" - js-yaml "npm:@zkochan/js-yaml@0.0.7" - jsonc-parser "3.2.0" - lines-and-columns "~2.0.3" - minimatch "9.0.3" - node-machine-id "1.1.12" - npm-run-path "^4.0.1" - open "^8.4.0" - ora "5.3.0" - semver "^7.5.3" - string-width "^4.2.3" - strong-log-transformer "^2.1.0" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - yargs "^17.6.2" - yargs-parser "21.1.1" + "@zkochan/js-yaml" "0.0.7" + "axios" "^1.7.2" + "chalk" "^4.1.0" + "cli-cursor" "3.1.0" + "cli-spinners" "2.6.1" + "cliui" "^8.0.1" + "dotenv" "~16.4.5" + "dotenv-expand" "~11.0.6" + "enquirer" "~2.3.6" + "figures" "3.2.0" + "flat" "^5.0.2" + "front-matter" "^4.0.2" + "fs-extra" "^11.1.0" + "ignore" "^5.0.4" + "jest-diff" "^29.4.1" + "jsonc-parser" "3.2.0" + "lines-and-columns" "~2.0.3" + "minimatch" "9.0.3" + "node-machine-id" "1.1.12" + "npm-run-path" "^4.0.1" + "open" "^8.4.0" + "ora" "5.3.0" + "semver" "^7.5.3" + "string-width" "^4.2.3" + "strong-log-transformer" "^2.1.0" + "tar-stream" "~2.2.0" + "tmp" "~0.2.1" + "tsconfig-paths" "^4.1.2" + "tslib" "^2.3.0" + "yargs" "^17.6.2" + "yargs-parser" "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "19.0.5" - "@nx/nx-darwin-x64" "19.0.5" - "@nx/nx-freebsd-x64" "19.0.5" - "@nx/nx-linux-arm-gnueabihf" "19.0.5" - "@nx/nx-linux-arm64-gnu" "19.0.5" - "@nx/nx-linux-arm64-musl" "19.0.5" - "@nx/nx-linux-x64-gnu" "19.0.5" - "@nx/nx-linux-x64-musl" "19.0.5" - "@nx/nx-win32-arm64-msvc" "19.0.5" - "@nx/nx-win32-x64-msvc" "19.0.5" - -nypm@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/nypm/-/nypm-0.3.8.tgz#a16b078b161be5885351e72cf0b97326973722bf" - integrity sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og== - dependencies: - citty "^0.1.6" - consola "^3.2.3" - execa "^8.0.1" - pathe "^1.1.2" - ufo "^1.4.0" - -oauth@0.10.x: - version "0.10.0" - resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.10.0.tgz#3551c4c9b95c53ea437e1e21e46b649482339c58" - integrity sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q== - -object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.fromentries@^2.0.7: - version "2.0.8" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" - integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.groupby@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - -object.values@^1.1.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -ohash@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.3.tgz#f12c3c50bfe7271ce3fd1097d42568122ccdcf07" - integrity sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A== - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -open@8.4.2, open@^8.0.4, open@^8.0.9, open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - 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" - -open@^7.0.3: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -opener@^1.5.1, opener@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -ora@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" - integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== - dependencies: - bl "^4.0.3" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -ora@5.4.1, ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -ospath@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" - integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== - -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + "@nx/nx-darwin-arm64" "19.5.6" + "@nx/nx-darwin-x64" "19.5.6" + "@nx/nx-freebsd-x64" "19.5.6" + "@nx/nx-linux-arm-gnueabihf" "19.5.6" + "@nx/nx-linux-arm64-gnu" "19.5.6" + "@nx/nx-linux-arm64-musl" "19.5.6" + "@nx/nx-linux-x64-gnu" "19.5.6" + "@nx/nx-linux-x64-musl" "19.5.6" + "@nx/nx-win32-arm64-msvc" "19.5.6" + "@nx/nx-win32-x64-msvc" "19.5.6" + +"nypm@^0.3.8": + "integrity" "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==" + "resolved" "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz" + "version" "0.3.8" + dependencies: + "citty" "^0.1.6" + "consola" "^3.2.3" + "execa" "^8.0.1" + "pathe" "^1.1.2" + "ufo" "^1.4.0" + +"oauth@0.10.x": + "integrity" "sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q==" + "resolved" "https://registry.npmjs.org/oauth/-/oauth-0.10.0.tgz" + "version" "0.10.0" + +"object-assign@^4", "object-assign@^4.1.0", "object-assign@^4.1.1": + "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-inspect@^1.13.1": + "integrity" "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" + "version" "1.13.1" + +"object-keys@^1.1.1": + "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + "version" "1.1.1" + +"object.assign@^4.1.5": + "integrity" "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==" + "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz" + "version" "4.1.5" + dependencies: + "call-bind" "^1.0.5" + "define-properties" "^1.2.1" + "has-symbols" "^1.0.3" + "object-keys" "^1.1.1" + +"object.fromentries@^2.0.7": + "integrity" "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==" + "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz" + "version" "2.0.8" + dependencies: + "call-bind" "^1.0.7" + "define-properties" "^1.2.1" + "es-abstract" "^1.23.2" + "es-object-atoms" "^1.0.0" + +"object.groupby@^1.0.1": + "integrity" "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==" + "resolved" "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "call-bind" "^1.0.7" + "define-properties" "^1.2.1" + "es-abstract" "^1.23.2" + +"object.values@^1.1.7": + "integrity" "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==" + "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "call-bind" "^1.0.7" + "define-properties" "^1.2.1" + "es-object-atoms" "^1.0.0" + +"obuf@^1.0.0", "obuf@^1.1.2": + "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + "version" "1.1.2" + +"ohash@^1.1.3": + "integrity" "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==" + "resolved" "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz" + "version" "1.1.3" + +"on-finished@^2.3.0", "on-finished@^2.4.1", "on-finished@2.4.1": + "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + "version" "2.4.1" + dependencies: + "ee-first" "1.1.1" + +"on-headers@~1.0.2": + "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + "version" "1.0.2" + +"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": + "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"onetime@^1.0.0": + "integrity" "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz" + "version" "1.1.0" + +"onetime@^2.0.0": + "integrity" "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "mimic-fn" "^1.0.0" + +"onetime@^5.1.0", "onetime@^5.1.2": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "mimic-fn" "^2.1.0" + +"onetime@^6.0.0": + "integrity" "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "mimic-fn" "^4.0.0" + +"onetime@^7.0.0": + "integrity" "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "mimic-function" "^5.0.0" + +"only@~0.0.2": + "integrity" "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + "resolved" "https://registry.npmjs.org/only/-/only-0.0.2.tgz" + "version" "0.0.2" + +"open-color@1.9.1": + "integrity" "sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw==" + "resolved" "https://registry.npmjs.org/open-color/-/open-color-1.9.1.tgz" + "version" "1.9.1" + +"open@^10.0.3", "open@10.1.0": + "integrity" "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==" + "resolved" "https://registry.npmjs.org/open/-/open-10.1.0.tgz" + "version" "10.1.0" + dependencies: + "default-browser" "^5.2.1" + "define-lazy-prop" "^3.0.0" + "is-inside-container" "^1.0.0" + "is-wsl" "^3.1.0" + +"open@^8.0.9": + "integrity" "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==" + "resolved" "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + "version" "8.4.2" + dependencies: + "define-lazy-prop" "^2.0.0" + "is-docker" "^2.1.1" + "is-wsl" "^2.2.0" + +"open@^8.4.0": + "integrity" "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==" + "resolved" "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + "version" "8.4.2" + dependencies: + "define-lazy-prop" "^2.0.0" + "is-docker" "^2.1.1" + "is-wsl" "^2.2.0" + +"opener@^1.5.1", "opener@^1.5.2": + "integrity" "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + "resolved" "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" + "version" "1.5.2" + +"optionator@^0.8.1": + "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + "version" "0.8.3" + dependencies: + "deep-is" "~0.1.3" + "fast-levenshtein" "~2.0.6" + "levn" "~0.3.0" + "prelude-ls" "~1.1.2" + "type-check" "~0.3.2" + "word-wrap" "~1.2.3" + +"optionator@^0.9.3": + "integrity" "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" + "version" "0.9.4" + dependencies: + "deep-is" "^0.1.3" + "fast-levenshtein" "^2.0.6" + "levn" "^0.4.1" + "prelude-ls" "^1.2.1" + "type-check" "^0.4.0" + "word-wrap" "^1.2.5" + +"ora@^5.4.1", "ora@5.4.1": + "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" + "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + "version" "5.4.1" + dependencies: + "bl" "^4.1.0" + "chalk" "^4.1.0" + "cli-cursor" "^3.1.0" + "cli-spinners" "^2.5.0" + "is-interactive" "^1.0.0" + "is-unicode-supported" "^0.1.0" + "log-symbols" "^4.1.0" + "strip-ansi" "^6.0.0" + "wcwidth" "^1.0.1" + +"ora@5.3.0": + "integrity" "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==" + "resolved" "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz" + "version" "5.3.0" + dependencies: + "bl" "^4.0.3" + "chalk" "^4.1.0" + "cli-cursor" "^3.1.0" + "cli-spinners" "^2.5.0" + "is-interactive" "^1.0.0" + "log-symbols" "^4.0.0" + "strip-ansi" "^6.0.0" + "wcwidth" "^1.0.1" + +"ordered-binary@^1.4.1": + "integrity" "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==" + "resolved" "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz" + "version" "1.5.1" + +"os-tmpdir@~1.0.2": + "integrity" "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + "version" "1.0.2" + +"ospath@^1.2.2": + "integrity" "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==" + "resolved" "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz" + "version" "1.2.2" + +"p-cancelable@^2.0.0": + "integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" + "version" "2.1.1" + +"p-limit@^2.0.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^2.2.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^3.0.2", "p-limit@^3.1.0": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-limit@^4.0.0": + "integrity" "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "yocto-queue" "^1.0.0" + +"p-locate@^3.0.0": + "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "p-limit" "^2.0.0" + +"p-locate@^4.1.0": + "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "p-limit" "^2.2.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + +"p-locate@^6.0.0": + "integrity" "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-limit" "^4.0.0" + +"p-map@^2.0.0": + "integrity" "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + "resolved" "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + "version" "2.1.0" + +"p-map@^4.0.0": + "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" + "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "aggregate-error" "^3.0.0" + +"p-retry@^4.5.0": + "integrity" "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" + "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + "version" "4.6.2" dependencies: "@types/retry" "0.12.0" - retry "^0.13.1" + "retry" "^0.13.1" + +"p-retry@^6.2.0": + "integrity" "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==" + "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "@types/retry" "0.12.2" + "is-network-error" "^1.0.0" + "retry" "^0.13.1" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" -pacote@17.0.6: - version "17.0.6" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-17.0.6.tgz#874bb59cda5d44ab784d0b6530fcb4a7d9b76a60" - integrity sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ== +"package-json-from-dist@^1.0.0": + "integrity" "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + "resolved" "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz" + "version" "1.0.0" + +"pacote@18.0.6": + "integrity" "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==" + "resolved" "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz" + "version" "18.0.6" dependencies: "@npmcli/git" "^5.0.0" "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/package-json" "^5.1.0" "@npmcli/promise-spawn" "^7.0.0" - "@npmcli/run-script" "^7.0.0" - cacache "^18.0.0" - fs-minipass "^3.0.0" - minipass "^7.0.2" - npm-package-arg "^11.0.0" - npm-packlist "^8.0.0" - npm-pick-manifest "^9.0.0" - npm-registry-fetch "^16.0.0" - proc-log "^3.0.0" - promise-retry "^2.0.1" - read-package-json "^7.0.0" - read-package-json-fast "^3.0.0" - sigstore "^2.2.0" - ssri "^10.0.0" - tar "^6.1.11" - -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== - -papaparse@5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.1.tgz#770b7a9124d821d4b2132132b7bd7dce7194b5b1" - integrity sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA== - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + "@npmcli/run-script" "^8.0.0" + "cacache" "^18.0.0" + "fs-minipass" "^3.0.0" + "minipass" "^7.0.2" + "npm-package-arg" "^11.0.0" + "npm-packlist" "^8.0.0" + "npm-pick-manifest" "^9.0.0" + "npm-registry-fetch" "^17.0.0" + "proc-log" "^4.0.0" + "promise-retry" "^2.0.1" + "sigstore" "^2.2.0" + "ssri" "^10.0.0" + "tar" "^6.1.11" + +"papaparse@5.3.1": + "integrity" "sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA==" + "resolved" "https://registry.npmjs.org/papaparse/-/papaparse-5.3.1.tgz" + "version" "5.3.1" + +"param-case@^3.0.4": + "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" + "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "dot-case" "^3.0.4" + "tslib" "^2.0.3" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"parse-json@^5.0.0", "parse-json@^5.2.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" 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" - -parse-node-version@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse5-html-rewriting-stream@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz#e376d3e762d2950ccbb6bb59823fc1d7e9fdac36" - integrity sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg== - dependencies: - entities "^4.3.0" - parse5 "^7.0.0" - parse5-sax-parser "^7.0.0" - -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5-sax-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz#4c05064254f0488676aca75fb39ca069ec96dee5" - integrity sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg== - dependencies: - parse5 "^7.0.0" - -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== - -parse5@^7.0.0, parse5@^7.1.1, parse5@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -passport-google-oauth20@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz#0d241b2d21ebd3dc7f2b60669ec4d587e3a674ef" - integrity sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ== - dependencies: - passport-oauth2 "1.x.x" - -passport-jwt@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.1.tgz#c443795eff322c38d173faa0a3c481479646ec3d" - integrity sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ== - dependencies: - jsonwebtoken "^9.0.0" - passport-strategy "^1.0.0" - -passport-oauth2@1.x.x: - version "1.8.0" - resolved "https://registry.yarnpkg.com/passport-oauth2/-/passport-oauth2-1.8.0.tgz#55725771d160f09bbb191828d5e3d559eee079c8" - integrity sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA== - dependencies: - base64url "3.x.x" - oauth "0.10.x" - passport-strategy "1.x.x" - uid2 "0.0.x" - utils-merge "1.x.x" - -passport-strategy@1.x.x, passport-strategy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" - integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA== - -passport@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/passport/-/passport-0.7.0.tgz#3688415a59a48cf8068417a8a8092d4492ca3a05" - integrity sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ== - dependencies: - passport-strategy "1.x.x" - pause "0.0.1" - utils-merge "^1.0.1" - -path-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.2.tgz#8f6357eb1239d5fa1da8b9f70e9c080675458ba7" - integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-to-regexp@0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.2.5.tgz#0b426991e387fc4c675de23557f358715eb66fb0" - integrity sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q== - -path-to-regexp@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.2.0.tgz#fa7877ecbc495c601907562222453c43cc204a5f" - integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathe@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" - integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== - -pause@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" - integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg== - -peek-stream@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" - integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== - dependencies: - buffer-from "^1.0.0" - duplexify "^3.5.0" - through2 "^2.0.3" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -perf-marks@^1.13.4: - version "1.14.2" - resolved "https://registry.yarnpkg.com/perf-marks/-/perf-marks-1.14.2.tgz#7511c24239b9c2071717993a33ec3057f387b8c7" - integrity sha512-N0/bQcuTlETpgox/DsXS1voGjqaoamMoiyhncgeW3rSHy/qw8URVgmPRYfFDQns/+C6yFUHDbeSBGL7ixT6Y4A== - dependencies: - tslib "^2.1.0" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.1.tgz#68c26c8837399e5819edce48590412ea07f17a07" - integrity sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg== - -picomatch@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.2.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.4, pirates@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -piscina@4.4.0, piscina@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/piscina/-/piscina-4.4.0.tgz#e3af8e5721d8fad08c6ccaf8a64f9f42279efbb5" - integrity sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg== + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" + +"parse-node-version@^1.0.1": + "integrity" "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + "resolved" "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" + "version" "1.0.1" + +"parse-passwd@^1.0.0": + "integrity" "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" + "resolved" "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" + "version" "1.0.0" + +"parse5-html-rewriting-stream@7.0.0": + "integrity" "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==" + "resolved" "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "entities" "^4.3.0" + "parse5" "^7.0.0" + "parse5-sax-parser" "^7.0.0" + +"parse5-htmlparser2-tree-adapter@^7.0.0": + "integrity" "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==" + "resolved" "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "domhandler" "^5.0.2" + "parse5" "^7.0.0" + +"parse5-sax-parser@^7.0.0": + "integrity" "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==" + "resolved" "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "parse5" "^7.0.0" + +"parse5@^7.0.0", "parse5@^7.1.1", "parse5@^7.1.2": + "integrity" "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==" + "resolved" "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + "version" "7.1.2" + dependencies: + "entities" "^4.4.0" + +"parse5@4.0.0": + "integrity" "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + "resolved" "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz" + "version" "4.0.0" + +"parseurl@^1.3.2", "parseurl@~1.3.2", "parseurl@~1.3.3": + "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + "version" "1.3.3" + +"pascal-case@^3.1.2": + "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" + "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"passport-google-oauth20@2.0.0": + "integrity" "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==" + "resolved" "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "passport-oauth2" "1.x.x" + +"passport-jwt@4.0.1": + "integrity" "sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==" + "resolved" "https://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "jsonwebtoken" "^9.0.0" + "passport-strategy" "^1.0.0" + +"passport-oauth2@1.x.x": + "integrity" "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==" + "resolved" "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "base64url" "3.x.x" + "oauth" "0.10.x" + "passport-strategy" "1.x.x" + "uid2" "0.0.x" + "utils-merge" "1.x.x" + +"passport-strategy@^1.0.0", "passport-strategy@1.x.x": + "integrity" "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==" + "resolved" "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "version" "1.0.0" + +"passport@^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", "passport@0.7.0": + "integrity" "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==" + "resolved" "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz" + "version" "0.7.0" + dependencies: + "passport-strategy" "1.x.x" + "pause" "0.0.1" + "utils-merge" "^1.0.1" + +"path-browserify@^1.0.1": + "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + "version" "1.0.1" + +"path-exists@^3.0.0": + "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + "version" "3.0.0" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-exists@^5.0.0": + "integrity" "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" + "version" "5.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-key@^3.0.0", "path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-key@^4.0.0": + "integrity" "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + "version" "4.0.0" + +"path-parse@^1.0.7": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-scurry@^1.10.2", "path-scurry@^1.11.1": + "integrity" "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==" + "resolved" "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "lru-cache" "^10.2.0" + "minipass" "^5.0.0 || ^6.0.2 || ^7.0.0" + +"path-to-regexp@0.1.7": + "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + "version" "0.1.7" + +"path-to-regexp@0.2.5": + "integrity" "sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.2.5.tgz" + "version" "0.2.5" + +"path-to-regexp@3.2.0": + "integrity" "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" + "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz" + "version" "3.2.0" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"path-type@^5.0.0": + "integrity" "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz" + "version" "5.0.0" + +"pathe@^1.1.2": + "integrity" "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + "resolved" "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz" + "version" "1.1.2" + +"pause@0.0.1": + "integrity" "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + "resolved" "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + "version" "0.0.1" + +"pend@~1.2.0": + "integrity" "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + "version" "1.2.0" + +"perf-marks@^1.13.4": + "integrity" "sha512-N0/bQcuTlETpgox/DsXS1voGjqaoamMoiyhncgeW3rSHy/qw8URVgmPRYfFDQns/+C6yFUHDbeSBGL7ixT6Y4A==" + "resolved" "https://registry.npmjs.org/perf-marks/-/perf-marks-1.14.2.tgz" + "version" "1.14.2" + dependencies: + "tslib" "^2.1.0" + +"performance-now@^2.1.0": + "integrity" "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + "version" "2.1.0" + +"picocolors@^1.0.0", "picocolors@^1.0.1": + "integrity" "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" + "version" "1.0.1" + +"picomatch@^2.0.4": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"picomatch@^2.2.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"picomatch@^2.2.3": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"picomatch@4.0.2": + "integrity" "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" + "version" "4.0.2" + +"pify@^2.2.0", "pify@^2.3.0": + "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + "version" "2.3.0" + +"pify@^4.0.1": + "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + "version" "4.0.1" + +"pirates@^4.0.4", "pirates@^4.0.6": + "integrity" "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" + "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + "version" "4.0.6" + +"piscina@^4.4.0", "piscina@4.6.1": + "integrity" "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==" + "resolved" "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz" + "version" "4.6.1" optionalDependencies: - nice-napi "^1.0.2" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" + "nice-napi" "^1.0.2" -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== +"pkg-dir@^3.0.0": + "integrity" "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + "version" "3.0.0" dependencies: - find-up "^4.0.0" + "find-up" "^3.0.0" -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== +"pkg-dir@^4.1.0", "pkg-dir@^4.2.0": + "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + "version" "4.2.0" dependencies: - find-up "^5.0.0" + "find-up" "^4.0.0" -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== +"pkg-dir@^7.0.0": + "integrity" "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz" + "version" "7.0.0" dependencies: - find-up "^6.3.0" + "find-up" "^6.3.0" -pluralize@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== +"pluralize@8.0.0": + "integrity" "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" + "resolved" "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" + "version" "8.0.0" -polished@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/polished/-/polished-4.3.1.tgz#5a00ae32715609f83d89f6f31d0f0261c6170548" - integrity sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA== +"polished@^4.2.2": + "integrity" "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==" + "resolved" "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz" + "version" "4.3.1" dependencies: "@babel/runtime" "^7.17.8" -portfinder@^1.0.28: - version "1.0.32" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" - integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== - dependencies: - async "^2.6.4" - debug "^3.2.7" - mkdirp "^0.5.6" - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss-calc@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" - integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== - dependencies: - postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" - -postcss-colormin@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" - integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== - dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" - colord "^2.9.3" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48" - integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== - dependencies: - browserslist "^4.23.0" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" - integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== - -postcss-discard-duplicates@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb" - integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== - -postcss-discard-empty@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9" - integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== - -postcss-discard-overridden@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d" - integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== - -postcss-import@~14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" - integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-loader@8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-8.1.1.tgz#2822589e7522927344954acb55bbf26e8b195dfe" - integrity sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ== - dependencies: - cosmiconfig "^9.0.0" - jiti "^1.20.0" - semver "^7.5.4" - -postcss-loader@^6.1.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== - dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.5" - -postcss-media-query-parser@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" - integrity sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig== - -postcss-merge-longhand@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a" - integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^6.1.1" - -postcss-merge-rules@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d" - integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== - dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" - cssnano-utils "^4.0.2" - postcss-selector-parser "^6.0.16" - -postcss-minify-font-values@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59" - integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6" - integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== - dependencies: - colord "^2.9.3" - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08" - integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== - dependencies: - browserslist "^4.23.0" - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff" - integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== +"popper.js@^1.16.1": + "integrity" "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + "resolved" "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz" + "version" "1.16.1" + +"portfinder@^1.0.28": + "integrity" "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==" + "resolved" "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz" + "version" "1.0.32" + dependencies: + "async" "^2.6.4" + "debug" "^3.2.7" + "mkdirp" "^0.5.6" + +"possible-typed-array-names@^1.0.0": + "integrity" "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + "resolved" "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz" + "version" "1.0.0" + +"postcss-calc@^9.0.1": + "integrity" "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==" + "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" + "version" "9.0.1" + dependencies: + "postcss-selector-parser" "^6.0.11" + "postcss-value-parser" "^4.2.0" + +"postcss-colormin@^6.1.0": + "integrity" "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==" + "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "browserslist" "^4.23.0" + "caniuse-api" "^3.0.0" + "colord" "^2.9.3" + "postcss-value-parser" "^4.2.0" + +"postcss-convert-values@^6.1.0": + "integrity" "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==" + "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "browserslist" "^4.23.0" + "postcss-value-parser" "^4.2.0" + +"postcss-discard-comments@^6.0.2": + "integrity" "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==" + "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz" + "version" "6.0.2" + +"postcss-discard-duplicates@^6.0.3": + "integrity" "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==" + "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz" + "version" "6.0.3" + +"postcss-discard-empty@^6.0.3": + "integrity" "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==" + "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz" + "version" "6.0.3" + +"postcss-discard-overridden@^6.0.2": + "integrity" "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==" + "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz" + "version" "6.0.2" + +"postcss-import@~14.1.0": + "integrity" "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==" + "resolved" "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz" + "version" "14.1.0" + dependencies: + "postcss-value-parser" "^4.0.0" + "read-cache" "^1.0.0" + "resolve" "^1.1.7" + +"postcss-loader@^6.1.1": + "integrity" "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==" + "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" + "version" "6.2.1" + dependencies: + "cosmiconfig" "^7.0.0" + "klona" "^2.0.5" + "semver" "^7.3.5" + +"postcss-loader@8.1.1": + "integrity" "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==" + "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "cosmiconfig" "^9.0.0" + "jiti" "^1.20.0" + "semver" "^7.5.4" + +"postcss-media-query-parser@^0.2.3": + "integrity" "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + "resolved" "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz" + "version" "0.2.3" + +"postcss-merge-longhand@^6.0.5": + "integrity" "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==" + "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz" + "version" "6.0.5" + dependencies: + "postcss-value-parser" "^4.2.0" + "stylehacks" "^6.1.1" + +"postcss-merge-rules@^6.1.1": + "integrity" "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==" + "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz" + "version" "6.1.1" + dependencies: + "browserslist" "^4.23.0" + "caniuse-api" "^3.0.0" + "cssnano-utils" "^4.0.2" + "postcss-selector-parser" "^6.0.16" + +"postcss-minify-font-values@^6.1.0": + "integrity" "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==" + "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "postcss-value-parser" "^4.2.0" + +"postcss-minify-gradients@^6.0.3": + "integrity" "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==" + "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "colord" "^2.9.3" + "cssnano-utils" "^4.0.2" + "postcss-value-parser" "^4.2.0" + +"postcss-minify-params@^6.1.0": + "integrity" "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==" + "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "browserslist" "^4.23.0" + "cssnano-utils" "^4.0.2" + "postcss-value-parser" "^4.2.0" + +"postcss-minify-selectors@^6.0.4": + "integrity" "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==" + "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz" + "version" "6.0.4" dependencies: - postcss-selector-parser "^6.0.16" - -postcss-modules-extract-imports@^3.0.0, postcss-modules-extract-imports@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" - integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== - -postcss-modules-local-by-default@^4.0.4, postcss-modules-local-by-default@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" - integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" + "postcss-selector-parser" "^6.0.16" + +"postcss-modules-extract-imports@^3.1.0": + "integrity" "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==" + "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz" + "version" "3.1.0" + +"postcss-modules-local-by-default@^4.0.5": + "integrity" "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==" + "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "icss-utils" "^5.0.0" + "postcss-selector-parser" "^6.0.2" + "postcss-value-parser" "^4.1.0" -postcss-modules-scope@^3.1.1, postcss-modules-scope@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" - integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== +"postcss-modules-scope@^3.2.0": + "integrity" "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz" + "version" "3.2.0" dependencies: - postcss-selector-parser "^6.0.4" + "postcss-selector-parser" "^6.0.4" -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== +"postcss-modules-values@^4.0.0": + "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + "version" "4.0.0" dependencies: - icss-utils "^5.0.0" + "icss-utils" "^5.0.0" -postcss-normalize-charset@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" - integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== +"postcss-normalize-charset@^6.0.2": + "integrity" "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==" + "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz" + "version" "6.0.2" -postcss-normalize-display-values@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535" - integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== +"postcss-normalize-display-values@^6.0.2": + "integrity" "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz" + "version" "6.0.2" dependencies: - postcss-value-parser "^4.2.0" + "postcss-value-parser" "^4.2.0" -postcss-normalize-positions@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a" - integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== +"postcss-normalize-positions@^6.0.2": + "integrity" "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==" + "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz" + "version" "6.0.2" dependencies: - postcss-value-parser "^4.2.0" + "postcss-value-parser" "^4.2.0" -postcss-normalize-repeat-style@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3" - integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== +"postcss-normalize-repeat-style@^6.0.2": + "integrity" "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==" + "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz" + "version" "6.0.2" dependencies: - postcss-value-parser "^4.2.0" + "postcss-value-parser" "^4.2.0" -postcss-normalize-string@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363" - integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== +"postcss-normalize-string@^6.0.2": + "integrity" "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==" + "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz" + "version" "6.0.2" dependencies: - postcss-value-parser "^4.2.0" + "postcss-value-parser" "^4.2.0" -postcss-normalize-timing-functions@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0" - integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== +"postcss-normalize-timing-functions@^6.0.2": + "integrity" "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==" + "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz" + "version" "6.0.2" dependencies: - postcss-value-parser "^4.2.0" + "postcss-value-parser" "^4.2.0" -postcss-normalize-unicode@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e" - integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== +"postcss-normalize-unicode@^6.1.0": + "integrity" "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==" + "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz" + "version" "6.1.0" dependencies: - browserslist "^4.23.0" - postcss-value-parser "^4.2.0" + "browserslist" "^4.23.0" + "postcss-value-parser" "^4.2.0" -postcss-normalize-url@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79" - integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== +"postcss-normalize-url@^6.0.2": + "integrity" "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==" + "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz" + "version" "6.0.2" dependencies: - postcss-value-parser "^4.2.0" + "postcss-value-parser" "^4.2.0" -postcss-normalize-whitespace@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd" - integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== +"postcss-normalize-whitespace@^6.0.2": + "integrity" "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==" + "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz" + "version" "6.0.2" dependencies: - postcss-value-parser "^4.2.0" + "postcss-value-parser" "^4.2.0" -postcss-ordered-values@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" - integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== +"postcss-ordered-values@^6.0.2": + "integrity" "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==" + "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz" + "version" "6.0.2" dependencies: - cssnano-utils "^4.0.2" - postcss-value-parser "^4.2.0" + "cssnano-utils" "^4.0.2" + "postcss-value-parser" "^4.2.0" -postcss-reduce-initial@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba" - integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== +"postcss-reduce-initial@^6.1.0": + "integrity" "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==" + "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz" + "version" "6.1.0" dependencies: - browserslist "^4.23.0" - caniuse-api "^3.0.0" + "browserslist" "^4.23.0" + "caniuse-api" "^3.0.0" -postcss-reduce-transforms@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d" - integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== +"postcss-reduce-transforms@^6.0.2": + "integrity" "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==" + "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz" + "version" "6.0.2" dependencies: - postcss-value-parser "^4.2.0" + "postcss-value-parser" "^4.2.0" -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.16" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" - integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== +"postcss-selector-parser@^6.0.11", "postcss-selector-parser@^6.0.16", "postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4": + "integrity" "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==" + "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz" + "version" "6.0.16" dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" + "cssesc" "^3.0.0" + "util-deprecate" "^1.0.2" -postcss-svgo@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa" - integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== +"postcss-svgo@^6.0.3": + "integrity" "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==" + "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz" + "version" "6.0.3" dependencies: - postcss-value-parser "^4.2.0" - svgo "^3.2.0" + "postcss-value-parser" "^4.2.0" + "svgo" "^3.2.0" -postcss-unique-selectors@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088" - integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== +"postcss-unique-selectors@^6.0.4": + "integrity" "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==" + "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz" + "version" "6.0.4" dependencies: - postcss-selector-parser "^6.0.16" + "postcss-selector-parser" "^6.0.16" -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +"postcss-value-parser@^4.0.0", "postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": + "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + "version" "4.2.0" -postcss@8.4.35: - version "8.4.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" - integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== +"postcss@^7.0.0 || ^8.0.1", "postcss@^8.0.0", "postcss@^8.0.9", "postcss@^8.1.0", "postcss@^8.2.14", "postcss@^8.2.2", "postcss@^8.4.0", "postcss@^8.4.23", "postcss@^8.4.24", "postcss@^8.4.31", "postcss@^8.4.33", "postcss@^8.4.38", "postcss@8.4.38": + "integrity" "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" + "version" "8.4.38" dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" + "nanoid" "^3.3.7" + "picocolors" "^1.0.0" + "source-map-js" "^1.2.0" + +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" -postcss@^8.2.14, postcss@^8.4.14, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.4.35: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" +"prelude-ls@~1.1.2": + "integrity" "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + "version" "1.1.2" -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +"prettier-plugin-organize-attributes@1.0.0": + "integrity" "sha512-+NmameaLxbCcylEXsKPmawtzla5EE6ECqvGkpfQz4KM847fXDifB1gFnPQEpoADAq6IXg+cMI8Z0ISJEXa6fhg==" + "resolved" "https://registry.npmjs.org/prettier-plugin-organize-attributes/-/prettier-plugin-organize-attributes-1.0.0.tgz" + "version" "1.0.0" + +"prettier@^3.0.0", "prettier@^3.1.1", "prettier@2.x - 3.x", "prettier@3.3.3": + "integrity" "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" + "version" "3.3.3" + +"pretty-bytes@^5.4.1": + "integrity" "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" + "resolved" "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" + "version" "5.6.0" + +"pretty-error@^4.0.0": + "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" + "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "lodash" "^4.17.20" + "renderkid" "^3.0.0" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prettier-plugin-organize-attributes@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-plugin-organize-attributes/-/prettier-plugin-organize-attributes-1.0.0.tgz#037870ee3111b3c1d6371f677b64888de353cc63" - integrity sha512-+NmameaLxbCcylEXsKPmawtzla5EE6ECqvGkpfQz4KM847fXDifB1gFnPQEpoADAq6IXg+cMI8Z0ISJEXa6fhg== - -prettier@3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - -prettier@^2.8.0: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -pretty-bytes@^5.4.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" - integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== - dependencies: - lodash "^4.17.20" - renderkid "^3.0.0" - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== +"pretty-format@^29.0.0", "pretty-format@^29.7.0": + "integrity" "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==" + "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + "version" "29.7.0" dependencies: "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== - -prisma@5.14.0: - version "5.14.0" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.14.0.tgz#ffc4696a43b044b636c3303b7aa98c13c2ade4dd" - integrity sha512-gCNZco7y5XtjrnQYeDJTiVZmT/ncqCr5RY1/Cf8X2wgLRmyh9ayPAGBNziI4qEE4S6SxCH5omQLVo9lmURaJ/Q== - dependencies: - "@prisma/engines" "5.14.0" - -prismjs@^1.28.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" - integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== - -proc-log@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" - integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== - -proc-log@^4.0.0, proc-log@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" - integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -progress@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -prompts@^2.0.1, prompts@^2.4.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.7.2: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -puppeteer-core@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-2.1.1.tgz#e9b3fbc1237b4f66e25999832229e9db3e0b90ed" - integrity sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w== - dependencies: - "@types/mime-types" "^2.1.0" - debug "^4.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^4.0.0" - mime "^2.0.3" - mime-types "^2.1.25" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" - -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -pvtsutils@^1.3.2, pvtsutils@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" - integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== - dependencies: - tslib "^2.6.1" - -pvutils@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" - integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@^6.10.0, qs@^6.11.0, qs@^6.11.2, qs@^6.4.0: - version "6.12.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" - integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== - dependencies: - side-channel "^1.0.6" - -qs@~6.10.3: - version "6.10.5" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== - dependencies: - side-channel "^1.0.4" - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -ramda@0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" - integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== - -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - 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" - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-colorful@^5.1.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" - integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== - -react-dom@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-inspector@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.2.tgz#aa3028803550cb6dbd7344816d5c80bf39d07e9d" - integrity sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ== - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^18.0.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -react-remove-scroll-bar@^2.3.3: - version "2.3.6" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" - integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== - dependencies: - react-style-singleton "^2.2.1" - tslib "^2.0.0" - -react-remove-scroll@2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" - integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== - dependencies: - react-remove-scroll-bar "^2.3.3" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - -react-style-singleton@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" - integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== - dependencies: - get-nonce "^1.0.0" - invariant "^2.2.4" - tslib "^2.0.0" - -react@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - -read-package-json-fast@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" - integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== - dependencies: - json-parse-even-better-errors "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -read-package-json@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-7.0.1.tgz#8b5f6aab97a796cfb436516ade24c011d10964a9" - integrity sha512-8PcDiZ8DXUjLf687Ol4BR8Bpm2umR7vhoZOzNRt+uxD9GpBh/K+CAAALVIiYFknmvlmyg7hM7BSNUXPaCCqd0Q== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - npm-normalize-package-bin "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - 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" - -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -recast@^0.21.0: - version "0.21.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" - integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== - dependencies: - ast-types "0.15.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -recast@^0.23.1: - version "0.23.6" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.6.tgz#198fba74f66143a30acc81929302d214ce4e3bfa" - integrity sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ== - dependencies: - ast-types "^0.16.1" - esprima "~4.0.0" - source-map "~0.6.1" - tiny-invariant "^1.3.3" - tslib "^2.0.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -redis-commands@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" - integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== - -redis-errors@^1.0.0, redis-errors@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== - -redis-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== - dependencies: - redis-errors "^1.0.0" - -redis@^3.0.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/redis/-/redis-3.1.2.tgz#766851117e80653d23e0ed536254677ab647638c" - integrity sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw== - dependencies: - denque "^1.5.0" - redis-commands "^1.7.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - -reflect-metadata@0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" - integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== - -reflect-metadata@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b" - integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q== - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + "ansi-styles" "^5.0.0" + "react-is" "^18.0.0" + +"prisma@*", "prisma@5.18.0": + "integrity" "sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==" + "resolved" "https://registry.npmjs.org/prisma/-/prisma-5.18.0.tgz" + "version" "5.18.0" + dependencies: + "@prisma/engines" "5.18.0" + +"prismjs@^1.28.0": + "integrity" "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" + "version" "1.29.0" + +"proc-log@^3.0.0": + "integrity" "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==" + "resolved" "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz" + "version" "3.0.0" + +"proc-log@^4.0.0", "proc-log@^4.2.0": + "integrity" "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==" + "resolved" "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz" + "version" "4.2.0" + +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" + +"process@^0.11.10": + "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + "version" "0.11.10" + +"promise-inflight@^1.0.1": + "integrity" "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + "resolved" "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + "version" "1.0.1" + +"promise-retry@^2.0.1": + "integrity" "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==" + "resolved" "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "err-code" "^2.0.2" + "retry" "^0.12.0" + +"prompts@^2.0.1", "prompts@^2.4.0": + "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" + "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "kleur" "^3.0.3" + "sisteransi" "^1.0.5" + +"proxy-addr@~2.0.7": + "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" + "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "forwarded" "0.2.0" + "ipaddr.js" "1.9.1" + +"proxy-from-env@^1.1.0": + "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + "version" "1.1.0" + +"prr@~1.0.1": + "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + "version" "1.0.1" + +"psl@^1.1.33": + "integrity" "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "resolved" "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + "version" "1.9.0" + +"pump@^3.0.0": + "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" + "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "end-of-stream" "^1.1.0" + "once" "^1.3.1" + +"punycode@^1.4.1": + "integrity" "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + "version" "1.4.1" + +"punycode@^2.1.0", "punycode@^2.1.1": + "integrity" "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" + "version" "2.3.1" + +"pure-rand@^6.0.0": + "integrity" "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==" + "resolved" "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz" + "version" "6.1.0" + +"pvtsutils@^1.3.2", "pvtsutils@^1.3.5": + "integrity" "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==" + "resolved" "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "tslib" "^2.6.1" + +"pvutils@^1.1.3": + "integrity" "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==" + "resolved" "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz" + "version" "1.1.3" + +"qs@^6.11.0", "qs@^6.4.0", "qs@6.11.0": + "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + "version" "6.11.0" + dependencies: + "side-channel" "^1.0.4" + +"qs@^6.11.2": + "integrity" "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz" + "version" "6.12.1" + dependencies: + "side-channel" "^1.0.6" + +"qs@~6.10.3": + "integrity" "sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.5.tgz" + "version" "6.10.5" + dependencies: + "side-channel" "^1.0.4" + +"querystringify@^2.1.1": + "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + "version" "2.2.0" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"quick-lru@^5.1.1": + "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + "version" "5.1.1" + +"rambda@^9.1.0": + "integrity" "sha512-cl/7DCCKNxmsbc0dXZTJTY08rvDdzLhVfE6kPBson1fWzDapLzv0RKSzjpmAqP53fkQqAvq05gpUVHTrUNsuxg==" + "resolved" "https://registry.npmjs.org/rambda/-/rambda-9.3.0.tgz" + "version" "9.3.0" + +"ramda@~0.26.1": + "integrity" "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" + "resolved" "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz" + "version" "0.26.1" + +"randombytes@^2.1.0": + "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" + "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"range-parser@^1.2.1", "range-parser@~1.2.1": + "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + "version" "1.2.1" + +"raw-body@2.5.1": + "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + "version" "2.5.1" + dependencies: + "bytes" "3.1.2" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"raw-body@2.5.2": + "integrity" "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" + "version" "2.5.2" + dependencies: + "bytes" "3.1.2" + "http-errors" "2.0.0" + "iconv-lite" "0.4.24" + "unpipe" "1.0.0" + +"react-colorful@^5.1.2": + "integrity" "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==" + "resolved" "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz" + "version" "5.6.1" + +"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom@>=16.8.0", "react-dom@18.2.0": + "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + "scheduler" "^0.23.0" + +"react-is@^18.0.0": + "integrity" "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + "version" "18.3.1" + +"react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react@^18.2.0", "react@>= 0.14.0", "react@>=16", "react@>=16.8.0", "react@18.2.0": + "integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==" + "resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + +"read-cache@^1.0.0": + "integrity" "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==" + "resolved" "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "pify" "^2.3.0" + +"readable-stream@^2.0.1": + "integrity" "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + "version" "2.3.8" + 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" + +"readable-stream@^2.2.2": + "integrity" "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + "version" "2.3.8" + 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" + +"readable-stream@^3.0.6", "readable-stream@^3.1.1", "readable-stream@^3.4.0", "readable-stream@^3.6.0": + "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + "version" "3.6.2" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"recast@^0.23.3", "recast@^0.23.5": + "integrity" "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==" + "resolved" "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz" + "version" "0.23.9" + dependencies: + "ast-types" "^0.16.1" + "esprima" "~4.0.0" + "source-map" "~0.6.1" + "tiny-invariant" "^1.3.3" + "tslib" "^2.0.1" + +"rechoir@^0.6.2": + "integrity" "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==" + "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + "version" "0.6.2" + dependencies: + "resolve" "^1.1.6" + +"redis-commands@^1.7.0": + "integrity" "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + "resolved" "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz" + "version" "1.7.0" + +"redis-errors@^1.0.0", "redis-errors@^1.2.0": + "integrity" "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==" + "resolved" "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz" + "version" "1.2.0" + +"redis-parser@^3.0.0": + "integrity" "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==" + "resolved" "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "redis-errors" "^1.0.0" + +"redis@^3.0.2": + "integrity" "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==" + "resolved" "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "denque" "^1.5.0" + "redis-commands" "^1.7.0" + "redis-errors" "^1.2.0" + "redis-parser" "^3.0.0" + +"reflect-metadata@^0.1.12", "reflect-metadata@^0.1.13", "reflect-metadata@0.1.13": + "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" + "version" "0.1.13" + +"reflect-metadata@^0.2.0": + "integrity" "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz" + "version" "0.2.2" + +"regenerate-unicode-properties@^10.1.0": + "integrity" "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==" + "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" + "version" "10.1.1" + dependencies: + "regenerate" "^1.4.2" + +"regenerate@^1.4.2": + "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + "version" "1.4.2" + +"regenerator-runtime@^0.14.0": + "integrity" "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" + "version" "0.14.1" + +"regenerator-transform@^0.15.2": + "integrity" "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==" + "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" + "version" "0.15.2" dependencies: "@babel/runtime" "^7.8.4" -regex-parser@^2.2.11: - version "2.3.0" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.0.tgz#4bb61461b1a19b8b913f3960364bb57887f920ee" - integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== +"regex-parser@^2.2.11": + "integrity" "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==" + "resolved" "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz" + "version" "2.3.0" -regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== +"regexp.prototype.flags@^1.5.2": + "integrity" "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==" + "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz" + "version" "1.5.2" dependencies: - call-bind "^1.0.6" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.1" + "call-bind" "^1.0.6" + "define-properties" "^1.2.1" + "es-errors" "^1.3.0" + "set-function-name" "^2.0.1" -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== +"regexpu-core@^5.3.1": + "integrity" "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==" + "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + "version" "5.3.2" 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" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== - -remark-external-links@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" - integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== - dependencies: - extend "^3.0.0" - is-absolute-url "^3.0.0" - mdast-util-definitions "^4.0.0" - space-separated-tokens "^1.0.0" - unist-util-visit "^2.0.0" - -remark-slug@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.1.0.tgz#0503268d5f0c4ecb1f33315c00465ccdd97923ce" - integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== - dependencies: - github-slugger "^1.0.0" - mdast-util-to-string "^1.0.0" - unist-util-visit "^2.0.0" - -renderkid@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" - 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" - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -replace-in-file@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-7.0.1.tgz#1bb69a2e5596341cc6f0f581309add6c1d364b71" - integrity sha512-KbhgPq04eA+TxXuUxpgWIH9k/TjF+28ofon2PXP7vq6izAILhxOtksCVcLuuQLtyjouBaPdlH6RJYYcSPVxCOA== - dependencies: - chalk "^4.1.2" - glob "^8.1.0" - yargs "^17.7.2" - -request-progress@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" - integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== - dependencies: - throttleit "^1.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -requireindex@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-alpn@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url-loader@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" - integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== - dependencies: - adjust-sourcemap-loader "^4.0.0" - convert-source-map "^1.7.0" - loader-utils "^2.0.0" - postcss "^8.2.14" - source-map "0.6.1" - -resolve.exports@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@1.22.8, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== - dependencies: - lowercase-keys "^2.0.0" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw== - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -retry@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -robust-predicates@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" - integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== - -rollup@^4.2.0: - version "4.17.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.17.2.tgz#26d1785d0144122277fdb20ab3a24729ae68301f" - integrity sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ== + "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" + +"regjsparser@^0.9.1": + "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" + "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "jsesc" "~0.5.0" + +"rehype-external-links@^3.0.0": + "integrity" "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==" + "resolved" "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "@types/hast" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + "hast-util-is-element" "^3.0.0" + "is-absolute-url" "^4.0.0" + "space-separated-tokens" "^2.0.0" + "unist-util-visit" "^5.0.0" + +"rehype-slug@^6.0.0": + "integrity" "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==" + "resolved" "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@types/hast" "^3.0.0" + "github-slugger" "^2.0.0" + "hast-util-heading-rank" "^3.0.0" + "hast-util-to-string" "^3.0.0" + "unist-util-visit" "^5.0.0" + +"relateurl@^0.2.7": + "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + "version" "0.2.7" + +"renderkid@^3.0.0": + "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" + "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "css-select" "^4.1.3" + "dom-converter" "^0.2.0" + "htmlparser2" "^6.1.0" + "lodash" "^4.17.21" + "strip-ansi" "^6.0.1" + +"repeat-string@^1.6.1": + "integrity" "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + "version" "1.6.1" + +"replace-in-file@7.0.1": + "integrity" "sha512-KbhgPq04eA+TxXuUxpgWIH9k/TjF+28ofon2PXP7vq6izAILhxOtksCVcLuuQLtyjouBaPdlH6RJYYcSPVxCOA==" + "resolved" "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "chalk" "^4.1.2" + "glob" "^8.1.0" + "yargs" "^17.7.2" + +"request-progress@^3.0.0": + "integrity" "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==" + "resolved" "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "throttleit" "^1.0.0" + +"require-directory@^2.1.1": + "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + "version" "2.1.1" + +"require-from-string@^2.0.2": + "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + "version" "2.0.2" + +"requireindex@^1.1.0": + "integrity" "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==" + "resolved" "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz" + "version" "1.2.0" + +"requires-port@^1.0.0": + "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "version" "1.0.0" + +"resolve-alpn@^1.0.0": + "integrity" "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "resolved" "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" + "version" "1.2.1" + +"resolve-cwd@^3.0.0": + "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" + "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "resolve-from" "^5.0.0" + +"resolve-dir@^1.0.0", "resolve-dir@^1.0.1": + "integrity" "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==" + "resolved" "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "expand-tilde" "^2.0.0" + "global-modules" "^1.0.0" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" + +"resolve-url-loader@5.0.0": + "integrity" "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==" + "resolved" "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "adjust-sourcemap-loader" "^4.0.0" + "convert-source-map" "^1.7.0" + "loader-utils" "^2.0.0" + "postcss" "^8.2.14" + "source-map" "0.6.1" + +"resolve.exports@^2.0.0": + "integrity" "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==" + "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" + "version" "2.0.2" + +"resolve.exports@1.1.0": + "integrity" "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" + "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" + "version" "1.1.0" + +"resolve@^1.1.6", "resolve@^1.1.7", "resolve@^1.12.0", "resolve@^1.14.2", "resolve@^1.19.0", "resolve@^1.20.0", "resolve@^1.22.4", "resolve@^1.3.2", "resolve@1.22.8": + "integrity" "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + "version" "1.22.8" + dependencies: + "is-core-module" "^2.13.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"responselike@^2.0.0": + "integrity" "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==" + "resolved" "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "lowercase-keys" "^2.0.0" + +"restore-cursor@^1.0.1": + "integrity" "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "exit-hook" "^1.0.0" + "onetime" "^1.0.0" + +"restore-cursor@^2.0.0": + "integrity" "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "onetime" "^2.0.0" + "signal-exit" "^3.0.2" + +"restore-cursor@^3.1.0": + "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + +"restore-cursor@^5.0.0": + "integrity" "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "onetime" "^7.0.0" + "signal-exit" "^4.1.0" + +"retry@^0.12.0": + "integrity" "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + "version" "0.12.0" + +"retry@^0.13.1": + "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + "version" "0.13.1" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rfdc@^1.3.0", "rfdc@^1.4.1": + "integrity" "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" + "resolved" "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz" + "version" "1.4.1" + +"rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"rimraf@^5.0.5": + "integrity" "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz" + "version" "5.0.10" + dependencies: + "glob" "^10.3.7" + +"rimraf@~2.6.2": + "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + "version" "2.6.3" + dependencies: + "glob" "^7.1.3" + +"robust-predicates@^3.0.2": + "integrity" "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + "resolved" "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz" + "version" "3.0.2" + +"rollup@^4.13.0": + "integrity" "sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==" + "resolved" "https://registry.npmjs.org/rollup/-/rollup-4.21.1.tgz" + "version" "4.21.1" + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.21.1" + "@rollup/rollup-android-arm64" "4.21.1" + "@rollup/rollup-darwin-arm64" "4.21.1" + "@rollup/rollup-darwin-x64" "4.21.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.21.1" + "@rollup/rollup-linux-arm-musleabihf" "4.21.1" + "@rollup/rollup-linux-arm64-gnu" "4.21.1" + "@rollup/rollup-linux-arm64-musl" "4.21.1" + "@rollup/rollup-linux-powerpc64le-gnu" "4.21.1" + "@rollup/rollup-linux-riscv64-gnu" "4.21.1" + "@rollup/rollup-linux-s390x-gnu" "4.21.1" + "@rollup/rollup-linux-x64-gnu" "4.21.1" + "@rollup/rollup-linux-x64-musl" "4.21.1" + "@rollup/rollup-win32-arm64-msvc" "4.21.1" + "@rollup/rollup-win32-ia32-msvc" "4.21.1" + "@rollup/rollup-win32-x64-msvc" "4.21.1" + "fsevents" "~2.3.2" + +"rollup@4.18.0": + "integrity" "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==" + "resolved" "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz" + "version" "4.18.0" dependencies: "@types/estree" "1.0.5" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.17.2" - "@rollup/rollup-android-arm64" "4.17.2" - "@rollup/rollup-darwin-arm64" "4.17.2" - "@rollup/rollup-darwin-x64" "4.17.2" - "@rollup/rollup-linux-arm-gnueabihf" "4.17.2" - "@rollup/rollup-linux-arm-musleabihf" "4.17.2" - "@rollup/rollup-linux-arm64-gnu" "4.17.2" - "@rollup/rollup-linux-arm64-musl" "4.17.2" - "@rollup/rollup-linux-powerpc64le-gnu" "4.17.2" - "@rollup/rollup-linux-riscv64-gnu" "4.17.2" - "@rollup/rollup-linux-s390x-gnu" "4.17.2" - "@rollup/rollup-linux-x64-gnu" "4.17.2" - "@rollup/rollup-linux-x64-musl" "4.17.2" - "@rollup/rollup-win32-arm64-msvc" "4.17.2" - "@rollup/rollup-win32-ia32-msvc" "4.17.2" - "@rollup/rollup-win32-x64-msvc" "4.17.2" - fsevents "~2.3.2" - -run-async@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-3.0.0.tgz#42a432f6d76c689522058984384df28be379daad" - integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rw@1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" - integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== - -rxjs@7.5.6, rxjs@7.8.1, rxjs@^6.3.3, rxjs@^6.5.3, rxjs@^7.8.0, rxjs@^7.8.1: - version "7.5.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" - integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== - dependencies: - tslib "^2.1.0" - -sade@^1.7.3: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -safevalues@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/safevalues/-/safevalues-0.3.4.tgz#82e846a02b6956d7d40bf9f41e92e13fce0186db" - integrity sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw== - -sass-loader@14.1.1: - version "14.1.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-14.1.1.tgz#2c9d2277c5b1c5fe789cd0570c046d8ad23cb7ca" - integrity sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw== - dependencies: - neo-async "^2.6.2" - -sass-loader@^12.2.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" - integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== - dependencies: - klona "^2.0.4" - neo-async "^2.6.2" - -sass@1.71.1: - version "1.71.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.71.1.tgz#dfb09c63ce63f89353777bbd4a88c0a38386ee54" - integrity sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sass@^1.42.1: - version "1.77.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.0.tgz#e736c69aff9fae4a4e6dae60a979eee9c942f321" - integrity sha512-eGj4HNfXqBWtSnvItNkn7B6icqH14i3CiCGbzMKs3BAPTq62pp9NBYsBgyN4cA+qssqo9r26lW4JSvlaUUWbgw== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -sax@^1.2.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" - integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.23.0: - version "0.23.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" - integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== - dependencies: - loose-envify "^1.1.0" - -schema-utils@^3.1.1, schema-utils@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" - integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + "@rollup/rollup-android-arm-eabi" "4.18.0" + "@rollup/rollup-android-arm64" "4.18.0" + "@rollup/rollup-darwin-arm64" "4.18.0" + "@rollup/rollup-darwin-x64" "4.18.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.18.0" + "@rollup/rollup-linux-arm-musleabihf" "4.18.0" + "@rollup/rollup-linux-arm64-gnu" "4.18.0" + "@rollup/rollup-linux-arm64-musl" "4.18.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.18.0" + "@rollup/rollup-linux-riscv64-gnu" "4.18.0" + "@rollup/rollup-linux-s390x-gnu" "4.18.0" + "@rollup/rollup-linux-x64-gnu" "4.18.0" + "@rollup/rollup-linux-x64-musl" "4.18.0" + "@rollup/rollup-win32-arm64-msvc" "4.18.0" + "@rollup/rollup-win32-ia32-msvc" "4.18.0" + "@rollup/rollup-win32-x64-msvc" "4.18.0" + "fsevents" "~2.3.2" + +"run-applescript@^7.0.0": + "integrity" "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==" + "resolved" "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz" + "version" "7.0.0" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "queue-microtask" "^1.2.2" + +"rw@1": + "integrity" "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "resolved" "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" + "version" "1.3.3" + +"rxjs@^6.0.0 || ^7.4.0", "rxjs@^6.5.3 || ^7.4.0", "rxjs@^6.5.3 || ^7.5.0", "rxjs@^7.0.0", "rxjs@^7.1.0", "rxjs@>=6.4.0 <8", "rxjs@7.5.6": + "integrity" "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz" + "version" "7.5.6" + dependencies: + "tslib" "^2.1.0" + +"rxjs@^6.3.3": + "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + "version" "6.6.7" + dependencies: + "tslib" "^1.9.0" + +"rxjs@^6.5.3": + "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + "version" "6.6.7" + dependencies: + "tslib" "^1.9.0" + +"rxjs@^7.8.0": + "integrity" "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + "version" "7.8.1" + dependencies: + "tslib" "^2.1.0" + +"rxjs@7.8.1": + "integrity" "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + "version" "7.8.1" + dependencies: + "tslib" "^2.1.0" + +"sade@^1.7.3": + "integrity" "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==" + "resolved" "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz" + "version" "1.8.1" + dependencies: + "mri" "^1.1.0" + +"safe-array-concat@^1.1.2": + "integrity" "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==" + "resolved" "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz" + "version" "1.1.2" + dependencies: + "call-bind" "^1.0.7" + "get-intrinsic" "^1.2.4" + "has-symbols" "^1.0.3" + "isarray" "^2.0.5" + +"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.2", "safe-buffer@>=5.1.0", "safe-buffer@~5.2.0", "safe-buffer@5.2.1": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"safe-buffer@~5.1.0", "safe-buffer@~5.1.1": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-buffer@5.1.2": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-regex-test@^1.0.3": + "integrity" "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==" + "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "call-bind" "^1.0.6" + "es-errors" "^1.3.0" + "is-regex" "^1.1.4" + +"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"safevalues@^0.3.4": + "integrity" "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + "resolved" "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz" + "version" "0.3.4" + +"sass-loader@^12.2.0": + "integrity" "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==" + "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" + "version" "12.6.0" + dependencies: + "klona" "^2.0.4" + "neo-async" "^2.6.2" + +"sass-loader@14.2.1": + "integrity" "sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==" + "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz" + "version" "14.2.1" + dependencies: + "neo-async" "^2.6.2" + +"sass@*", "sass@^1.3.0", "sass@^1.42.1", "sass@1.77.6": + "integrity" "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==" + "resolved" "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz" + "version" "1.77.6" + dependencies: + "chokidar" ">=3.0.0 <4.0.0" + "immutable" "^4.0.0" + "source-map-js" ">=0.6.2 <2.0.0" + +"sax@^1.2.4": + "integrity" "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz" + "version" "1.3.0" + +"sax@~1.2.4": + "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + "version" "1.2.4" + +"saxes@^6.0.0": + "integrity" "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==" + "resolved" "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "xmlchars" "^2.2.0" + +"scheduler@^0.23.0": + "integrity" "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz" + "version" "0.23.2" + dependencies: + "loose-envify" "^1.1.0" + +"schema-utils@^3.1.1": + "integrity" "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "@types/json-schema" "^7.0.8" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" + +"schema-utils@^3.2.0": + "integrity" "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + "version" "3.3.0" dependencies: "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" + "ajv" "^6.12.5" + "ajv-keywords" "^3.5.2" -schema-utils@^4.0.0, schema-utils@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" - integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== +"schema-utils@^4.0.0", "schema-utils@^4.0.1", "schema-utils@^4.2.0": + "integrity" "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==" + "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + "version" "4.2.0" dependencies: "@types/json-schema" "^7.0.9" - ajv "^8.9.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.1.0" - -secure-compare@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" - integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== - -select@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" - integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== - -selfsigned@^2.1.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" - integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + "ajv" "^8.9.0" + "ajv-formats" "^2.1.1" + "ajv-keywords" "^5.1.0" + +"secure-compare@3.0.1": + "integrity" "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" + "resolved" "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz" + "version" "3.0.1" + +"select-hose@^2.0.0": + "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + "version" "2.0.0" + +"select@^1.1.2": + "integrity" "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + "resolved" "https://registry.npmjs.org/select/-/select-1.1.2.tgz" + "version" "1.1.2" + +"selfsigned@^2.1.1", "selfsigned@^2.4.1": + "integrity" "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==" + "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz" + "version" "2.4.1" dependencies: "@types/node-forge" "^1.3.0" - node-forge "^1" - -semver-dsl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" - integrity sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng== - dependencies: - semver "^5.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.6.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - -semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@~7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - 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" - -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -serve-favicon@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" - integrity sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA== - dependencies: - etag "~1.8.1" - fresh "0.5.2" - ms "2.1.1" - parseurl "~1.3.2" - safe-buffer "5.1.1" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - 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" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shx@0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.4.tgz#74289230b4b663979167f94e1935901406e40f02" - integrity sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g== - dependencies: - minimist "^1.2.3" - shelljs "^0.8.5" - -side-channel@^1.0.4, side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1, signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sigstore@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.3.0.tgz#c56b32818d4dc989f6ea3c0897f4d9bff5d14bed" - integrity sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A== + "node-forge" "^1" + +"semver-dsl@^1.0.1": + "integrity" "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==" + "resolved" "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "semver" "^5.3.0" + +"semver@^5.3.0": + "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + "version" "5.7.2" + +"semver@^5.6.0": + "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + "version" "5.7.2" + +"semver@^6.0.0": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^6.3.0": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^6.3.1": + "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + "version" "6.3.1" + +"semver@^7.0.0", "semver@^7.1.1", "semver@^7.3.2", "semver@^7.3.4", "semver@^7.3.5", "semver@^7.3.7", "semver@^7.3.8", "semver@^7.5.3", "semver@^7.5.4", "semver@^7.6.0", "semver@7.6.2", "semver@7.x": + "integrity" "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + "version" "7.6.2" + +"send@0.18.0": + "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" + "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + "version" "0.18.0" + 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" + +"serialize-javascript@^6.0.0", "serialize-javascript@^6.0.1", "serialize-javascript@^6.0.2": + "integrity" "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "randombytes" "^2.1.0" + +"serve-index@^1.9.1": + "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" + "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + "version" "1.9.1" + 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" + +"serve-static@1.15.0": + "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" + "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + "version" "1.15.0" + dependencies: + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "parseurl" "~1.3.3" + "send" "0.18.0" + +"set-function-length@^1.2.1": + "integrity" "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==" + "resolved" "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" + "version" "1.2.2" + dependencies: + "define-data-property" "^1.1.4" + "es-errors" "^1.3.0" + "function-bind" "^1.1.2" + "get-intrinsic" "^1.2.4" + "gopd" "^1.0.1" + "has-property-descriptors" "^1.0.2" + +"set-function-name@^2.0.1": + "integrity" "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==" + "resolved" "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "define-data-property" "^1.1.4" + "es-errors" "^1.3.0" + "functions-have-names" "^1.2.3" + "has-property-descriptors" "^1.0.2" + +"setprototypeof@1.1.0": + "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + "version" "1.1.0" + +"setprototypeof@1.2.0": + "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + "version" "1.2.0" + +"shallow-clone@^3.0.0": + "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" + "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "kind-of" "^6.0.2" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "shebang-regex" "^3.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"shell-quote@^1.8.1": + "integrity" "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" + "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + "version" "1.8.1" + +"shelljs@^0.8.5": + "integrity" "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==" + "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" + "version" "0.8.5" + dependencies: + "glob" "^7.0.0" + "interpret" "^1.0.0" + "rechoir" "^0.6.2" + +"shx@0.3.4": + "integrity" "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==" + "resolved" "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz" + "version" "0.3.4" + dependencies: + "minimist" "^1.2.3" + "shelljs" "^0.8.5" + +"side-channel@^1.0.4", "side-channel@^1.0.6": + "integrity" "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==" + "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "call-bind" "^1.0.7" + "es-errors" "^1.3.0" + "get-intrinsic" "^1.2.4" + "object-inspect" "^1.13.1" + +"signal-exit@^3.0.2": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" + +"signal-exit@^3.0.3": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" + +"signal-exit@^3.0.7": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" + +"signal-exit@^4.0.1", "signal-exit@^4.1.0": + "integrity" "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + "version" "4.1.0" + +"sigstore@^2.2.0": + "integrity" "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==" + "resolved" "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz" + "version" "2.3.0" dependencies: "@sigstore/bundle" "^2.3.1" "@sigstore/core" "^1.0.0" @@ -17030,1609 +15064,1641 @@ sigstore@^2.2.0: "@sigstore/tuf" "^2.3.1" "@sigstore/verify" "^1.2.0" -simple-cbor@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/simple-cbor/-/simple-cbor-0.4.1.tgz#0c88312e87db52b94e0e92f6bd1cf634e86f8a22" - integrity sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -simple-update-notifier@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" - integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== - dependencies: - semver "~7.0.0" +"simple-cbor@^0.4.1": + "integrity" "sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==" + "resolved" "https://registry.npmjs.org/simple-cbor/-/simple-cbor-0.4.1.tgz" + "version" "0.4.1" -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== +"simple-swizzle@^0.2.2": + "integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==" + "resolved" "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + "version" "0.2.2" dependencies: - semver "^7.5.3" + "is-arrayish" "^0.3.1" -sirv@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" - integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== +"sirv@^2.0.3": + "integrity" "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==" + "resolved" "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz" + "version" "2.0.4" dependencies: "@polka/url" "^1.0.0-next.24" - mrmime "^2.0.0" - totalist "^3.0.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw== - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -sockjs@^0.3.24: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -socks-proxy-agent@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d" - integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A== - dependencies: - agent-base "^7.1.1" - debug "^4.3.4" - socks "^2.7.1" - -socks@^2.7.1: - version "2.8.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" - integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== - dependencies: - ip-address "^9.0.5" - smart-buffer "^4.2.0" - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== - -source-map-loader@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-5.0.0.tgz#f593a916e1cc54471cfc8851b905c8a845fc7e38" - integrity sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA== - dependencies: - iconv-lite "^0.6.3" - source-map-js "^1.0.2" - -source-map-loader@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" - integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== - dependencies: - abab "^2.0.5" - iconv-lite "^0.6.3" - source-map-js "^1.0.1" - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@0.5.21, source-map-support@^0.5.16, source-map-support@^0.5.5, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@0.7.4, source-map@^0.7.3, source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -source-map@^0.5.0, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -space-separated-tokens@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" - integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.17" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" - integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - 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" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - 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" - -sprintf-js@^1.1.2, sprintf-js@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" - integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sshpk@^1.14.1: - version "1.18.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" - integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^10.0.0: - version "10.0.6" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" - integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== - dependencies: - minipass "^7.0.3" - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -standard-as-callback@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" - integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== - -static-eval@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" - integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== - dependencies: - escodegen "^1.8.1" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + "mrmime" "^2.0.0" + "totalist" "^3.0.0" + +"sisteransi@^1.0.5": + "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + "version" "1.0.5" + +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + +"slash@^4.0.0": + "integrity" "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" + "resolved" "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + "version" "4.0.0" + +"slash@^5.1.0": + "integrity" "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==" + "resolved" "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz" + "version" "5.1.0" + +"slice-ansi@^5.0.0": + "integrity" "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "ansi-styles" "^6.0.0" + "is-fullwidth-code-point" "^4.0.0" + +"slice-ansi@^7.1.0": + "integrity" "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz" + "version" "7.1.0" + dependencies: + "ansi-styles" "^6.2.1" + "is-fullwidth-code-point" "^5.0.0" + +"slice-ansi@0.0.4": + "integrity" "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" + "version" "0.0.4" + +"smart-buffer@^4.2.0": + "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + "version" "4.2.0" + +"sockjs@^0.3.24": + "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" + "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + "version" "0.3.24" + dependencies: + "faye-websocket" "^0.11.3" + "uuid" "^8.3.2" + "websocket-driver" "^0.7.4" + +"socks-proxy-agent@^8.0.3": + "integrity" "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==" + "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz" + "version" "8.0.3" + dependencies: + "agent-base" "^7.1.1" + "debug" "^4.3.4" + "socks" "^2.7.1" + +"socks@^2.7.1": + "integrity" "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==" + "resolved" "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz" + "version" "2.8.3" + dependencies: + "ip-address" "^9.0.5" + "smart-buffer" "^4.2.0" + +"sorted-array-functions@^1.3.0": + "integrity" "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" + "resolved" "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz" + "version" "1.3.0" + +"source-map-js@^1.0.1", "source-map-js@^1.0.2", "source-map-js@^1.2.0", "source-map-js@>=0.6.2 <2.0.0": + "integrity" "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" + "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" + "version" "1.2.0" + +"source-map-loader@^5.0.0", "source-map-loader@5.0.0": + "integrity" "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==" + "resolved" "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "iconv-lite" "^0.6.3" + "source-map-js" "^1.0.2" + +"source-map-support@^0.5.16", "source-map-support@^0.5.5", "source-map-support@~0.5.20", "source-map-support@0.5.21": + "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + "version" "0.5.21" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map-support@0.5.13": + "integrity" "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + "version" "0.5.13" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map-support@0.5.19": + "integrity" "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" + "version" "0.5.19" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map@^0.5.0": + "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + "version" "0.5.7" + +"source-map@^0.5.7": + "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + "version" "0.5.7" + +"source-map@^0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@^0.6.1": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@^0.7.3", "source-map@^0.7.4", "source-map@0.7.4": + "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + "version" "0.7.4" + +"source-map@~0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@~0.6.1": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@0.6.1": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"space-separated-tokens@^2.0.0": + "integrity" "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==" + "resolved" "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" + "version" "2.0.2" + +"spdx-correct@^3.0.0": + "integrity" "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==" + "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "spdx-expression-parse" "^3.0.0" + "spdx-license-ids" "^3.0.0" + +"spdx-exceptions@^2.1.0": + "integrity" "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz" + "version" "2.5.0" + +"spdx-expression-parse@^3.0.0": + "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" + "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "spdx-exceptions" "^2.1.0" + "spdx-license-ids" "^3.0.0" + +"spdx-license-ids@^3.0.0": + "integrity" "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz" + "version" "3.0.17" + +"spdy-transport@^3.0.0": + "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" + "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "debug" "^4.1.0" + "detect-node" "^2.0.4" + "hpack.js" "^2.1.6" + "obuf" "^1.1.2" + "readable-stream" "^3.0.6" + "wbuf" "^1.7.3" + +"spdy@^4.0.2": + "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" + "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + "version" "4.0.2" + 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" + +"sprintf-js@^1.1.2", "sprintf-js@^1.1.3": + "integrity" "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" + "version" "1.1.3" + +"sprintf-js@~1.0.2": + "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + +"sshpk@^1.14.1": + "integrity" "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==" + "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz" + "version" "1.18.0" + dependencies: + "asn1" "~0.2.3" + "assert-plus" "^1.0.0" + "bcrypt-pbkdf" "^1.0.0" + "dashdash" "^1.12.0" + "ecc-jsbn" "~0.1.1" + "getpass" "^0.1.1" + "jsbn" "~0.1.0" + "safer-buffer" "^2.0.2" + "tweetnacl" "~0.14.0" + +"ssri@^10.0.0": + "integrity" "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==" + "resolved" "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz" + "version" "10.0.6" + dependencies: + "minipass" "^7.0.3" + +"stack-utils@^2.0.3": + "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" + "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + "version" "2.0.6" + dependencies: + "escape-string-regexp" "^2.0.0" + +"standard-as-callback@^2.1.0": + "integrity" "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + "resolved" "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz" + "version" "2.1.0" + +"static-eval@2.0.2": + "integrity" "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==" + "resolved" "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "escodegen" "^1.8.1" + +"statuses@^1.5.0", "statuses@>= 1.5.0 < 2": + "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + "version" "1.5.0" "statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -store2@^2.14.2: - version "2.14.3" - resolved "https://registry.yarnpkg.com/store2/-/store2-2.14.3.tgz#24077d7ba110711864e4f691d2af941ec533deb5" - integrity sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg== - -storybook@7.0.9: - version "7.0.9" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-7.0.9.tgz#7f778d64d91c282f6747064854ce7fd89f457712" - integrity sha512-kUgeS22kjqmAN/BZwCLjgP/IhtVb9/cU0UAjGp/1q6FfU7hy+N2NS/lWJESgnZFNArbB0qNuLLi2QbZd6OvXzA== - dependencies: - "@storybook/cli" "7.0.9" + "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + "version" "1.5.0" -stream-shift@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" - integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== +"statuses@2.0.1": + "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + "version" "2.0.1" -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== +"storybook@^8.2.6", "storybook@^8.2.9", "storybook@8.2.6": + "integrity" "sha512-8j30wDxQmkcqI0fWcSYFsUCjErsY1yTWbTW+yjbwM8DyW18Cud6CwbFRCxjFsH+2M0CjP6Pqs/m1PGI0vcQscQ==" + "resolved" "https://registry.npmjs.org/storybook/-/storybook-8.2.6.tgz" + "version" "8.2.6" dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" + "@babel/core" "^7.24.4" + "@babel/types" "^7.24.0" + "@storybook/codemod" "8.2.6" + "@storybook/core" "8.2.6" + "@types/semver" "^7.3.4" + "@yarnpkg/fslib" "2.10.3" + "@yarnpkg/libzip" "2.3.0" + "chalk" "^4.1.0" + "commander" "^6.2.1" + "cross-spawn" "^7.0.3" + "detect-indent" "^6.1.0" + "envinfo" "^7.7.3" + "execa" "^5.0.0" + "fd-package-json" "^1.2.0" + "find-up" "^5.0.0" + "fs-extra" "^11.1.0" + "giget" "^1.0.0" + "globby" "^14.0.1" + "jscodeshift" "^0.15.1" + "leven" "^3.1.0" + "ora" "^5.4.1" + "prettier" "^3.1.1" + "prompts" "^2.4.0" + "semver" "^7.3.7" + "strip-json-comments" "^3.0.1" + "tempy" "^3.1.0" + "tiny-invariant" "^1.3.1" + "ts-dedent" "^2.0.0" + +"streamroller@^3.1.5": + "integrity" "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==" + "resolved" "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "date-format" "^4.0.14" + "debug" "^4.3.4" + "fs-extra" "^8.1.0" + +"streamsearch@^1.1.0": + "integrity" "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" + "resolved" "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + "version" "1.1.0" + +"string_decoder@^1.1.1": + "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "safe-buffer" "~5.2.0" + +"string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + +"string-length@^4.0.1": + "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" + "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "char-regex" "^1.0.2" + "strip-ansi" "^6.0.0" "string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - 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" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - 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" - -string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^1.0.1": + "integrity" "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "code-point-at" "^1.0.0" + "is-fullwidth-code-point" "^1.0.0" + "strip-ansi" "^3.0.0" + +"string-width@^2.1.1": + "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "is-fullwidth-code-point" "^2.0.0" + "strip-ansi" "^4.0.0" + +"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^5.0.1", "string-width@^5.1.2": + "integrity" "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "eastasianwidth" "^0.2.0" + "emoji-regex" "^9.2.2" + "strip-ansi" "^7.0.1" + +"string-width@^7.0.0": + "integrity" "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "emoji-regex" "^10.3.0" + "get-east-asian-width" "^1.0.0" + "strip-ansi" "^7.1.0" + +"string.prototype.trim@^1.2.9": + "integrity" "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==" + "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz" + "version" "1.2.9" + dependencies: + "call-bind" "^1.0.7" + "define-properties" "^1.2.1" + "es-abstract" "^1.23.0" + "es-object-atoms" "^1.0.0" + +"string.prototype.trimend@^1.0.8": + "integrity" "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==" + "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "call-bind" "^1.0.7" + "define-properties" "^1.2.1" + "es-object-atoms" "^1.0.0" + +"string.prototype.trimstart@^1.0.8": + "integrity" "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==" + "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "call-bind" "^1.0.7" + "define-properties" "^1.2.1" + "es-object-atoms" "^1.0.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + +"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": + "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + "version" "3.0.1" dependencies: - ansi-regex "^5.0.1" + "ansi-regex" "^2.0.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== +"strip-ansi@^4.0.0": + "integrity" "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + "version" "4.0.0" dependencies: - ansi-regex "^2.0.0" + "ansi-regex" "^3.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" dependencies: - ansi-regex "^3.0.0" + "ansi-regex" "^5.0.1" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +"strip-ansi@^7.0.1": + "integrity" "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + "version" "7.1.0" dependencies: - ansi-regex "^5.0.1" + "ansi-regex" "^6.0.1" -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== +"strip-ansi@^7.1.0": + "integrity" "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + "version" "7.1.0" dependencies: - ansi-regex "^6.0.1" + "ansi-regex" "^6.0.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== +"strip-bom@^3.0.0": + "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + "version" "3.0.0" -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== +"strip-bom@^4.0.0": + "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + "version" "4.0.0" -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +"strip-final-newline@^2.0.0": + "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + "version" "2.0.0" -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== +"strip-final-newline@^3.0.0": + "integrity" "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + "version" "3.0.0" -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +"strip-json-comments@^3.0.1", "strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" -stripe@11.12.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/stripe/-/stripe-11.12.0.tgz#2d7d4c37a6447a972128b1266e027693241704e3" - integrity sha512-7yzFyVV/eYpYalfjnw1f9sh/N3r5QVdx5MFtmpOg2QikKVAW4AptXC8P0wj1KNCd/LIo23nTDo0+m9788jHswg== +"stripe@15.11.0": + "integrity" "sha512-qmZF0PN1jRVpiQrXL8eTb9Jy/6S+aUlcDquKBFT2h3PkaD7RZ444FIojVXUg67FK2zFIUNXgMv02c7csdL5qHg==" + "resolved" "https://registry.npmjs.org/stripe/-/stripe-15.11.0.tgz" + "version" "15.11.0" dependencies: "@types/node" ">=8.1.0" - qs "^6.11.0" + "qs" "^6.11.0" -strong-log-transformer@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== +"strong-log-transformer@^2.1.0": + "integrity" "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==" + "resolved" "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz" + "version" "2.1.0" dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" + "duplexer" "^0.1.1" + "minimist" "^1.2.0" + "through" "^2.3.4" -style-loader@^3.3.0, style-loader@^3.3.1: - version "3.3.4" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" - integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== +"style-loader@^3.3.0", "style-loader@^3.3.1": + "integrity" "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==" + "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz" + "version" "3.3.4" -stylehacks@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" - integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== +"stylehacks@^6.1.1": + "integrity" "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==" + "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz" + "version" "6.1.1" dependencies: - browserslist "^4.23.0" - postcss-selector-parser "^6.0.16" + "browserslist" "^4.23.0" + "postcss-selector-parser" "^6.0.16" -stylis@^4.1.3: - version "4.3.2" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" - integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== +"stylis@^4.1.3": + "integrity" "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz" + "version" "4.3.2" -stylus-loader@^7.1.0: - version "7.1.3" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-7.1.3.tgz#1fdfa0d34e8c05a569bc0902e1ecdb857d764964" - integrity sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw== +"stylus-loader@^7.1.0": + "integrity" "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==" + "resolved" "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz" + "version" "7.1.3" dependencies: - fast-glob "^3.2.12" - normalize-path "^3.0.0" + "fast-glob" "^3.2.12" + "normalize-path" "^3.0.0" -stylus@^0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.59.0.tgz#a344d5932787142a141946536d6e24e6a6be7aa6" - integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== +"stylus@*", "stylus@^0.59.0", "stylus@>=0.52.4": + "integrity" "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==" + "resolved" "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz" + "version" "0.59.0" dependencies: "@adobe/css-tools" "^4.0.1" - debug "^4.3.2" - glob "^7.1.6" - sax "~1.2.4" - source-map "^0.7.3" + "debug" "^4.3.2" + "glob" "^7.1.6" + "sax" "~1.2.4" + "source-map" "^0.7.3" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== +"supports-color@^2.0.0": + "integrity" "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "version" "2.0.0" -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" dependencies: - has-flag "^3.0.0" + "has-flag" "^3.0.0" -supports-color@^7.1.0, supports-color@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== +"supports-color@^7.1.0", "supports-color@^7.2.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" dependencies: - has-flag "^4.0.0" + "has-flag" "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== +"supports-color@^8.0.0": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" dependencies: - has-flag "^4.0.0" + "has-flag" "^4.0.0" -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +"supports-preserve-symlinks-flag@^1.0.0": + "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + "version" "1.0.0" -svg-pan-zoom@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz#f880a1bb32d18e9c625d7715350bebc269b450cf" - integrity sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g== +"svg-pan-zoom@^3.6.1": + "integrity" "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==" + "resolved" "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz" + "version" "3.6.1" -svgmap@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/svgmap/-/svgmap-2.6.0.tgz#8533f40d3c1015d25f5e799e677b794acdd5fbc5" - integrity sha512-MePkVjgYlHwEfCSuGt+wB6WX6Z2fTD6yDtqZO5syzKYH7gamt1Hp9f/Bw5R49OvBtbsF7WCaGR0/GhewZGGA+w== +"svgmap@2.6.0": + "integrity" "sha512-MePkVjgYlHwEfCSuGt+wB6WX6Z2fTD6yDtqZO5syzKYH7gamt1Hp9f/Bw5R49OvBtbsF7WCaGR0/GhewZGGA+w==" + "resolved" "https://registry.npmjs.org/svgmap/-/svgmap-2.6.0.tgz" + "version" "2.6.0" dependencies: - svg-pan-zoom "^3.6.1" + "svg-pan-zoom" "^3.6.1" -svgo@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.1.tgz#27f7b40017eeaff227b6f9caea646b1c242319f5" - integrity sha512-xQQTIGRl3gHTO2PFlZFLl+Xwofj+CMOPitfoByGBNAniQnY6SbGgd31u3C8RTqdlqZqYNl9Sb83VXbimVHcU6w== +"svgo@^3.2.0": + "integrity" "sha512-xQQTIGRl3gHTO2PFlZFLl+Xwofj+CMOPitfoByGBNAniQnY6SbGgd31u3C8RTqdlqZqYNl9Sb83VXbimVHcU6w==" + "resolved" "https://registry.npmjs.org/svgo/-/svgo-3.3.1.tgz" + "version" "3.3.1" dependencies: "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^5.1.0" - css-tree "^2.3.1" - css-what "^6.1.0" - csso "^5.0.5" - picocolors "^1.0.0" - -swc-loader@^0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.6.tgz#bf0cba8eeff34bb19620ead81d1277fefaec6bc8" - integrity sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg== - dependencies: - "@swc/counter" "^0.1.3" - -symbol-observable@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -synchronous-promise@^2.0.15: - version "2.0.17" - resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.17.tgz#38901319632f946c982152586f2caf8ddc25c032" - integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== - -tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar-fs@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4, tar-stream@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^6.1.11, tar@^6.1.2, tar@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -telejson@^7.0.3, telejson@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.2.0.tgz#3994f6c9a8f8d7f2dba9be2c7c5bbb447e876f32" - integrity sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ== - dependencies: - memoizerific "^1.11.3" - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -tempy@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" - integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== - dependencies: - del "^6.0.0" - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.3: - version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" - integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + "commander" "^7.2.0" + "css-select" "^5.1.0" + "css-tree" "^2.3.1" + "css-what" "^6.1.0" + "csso" "^5.0.5" + "picocolors" "^1.0.0" + +"symbol-observable@^1.1.0": + "integrity" "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + "resolved" "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz" + "version" "1.2.0" + +"symbol-observable@4.0.0": + "integrity" "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==" + "resolved" "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" + "version" "4.0.0" + +"symbol-tree@^3.2.4": + "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + "version" "3.2.4" + +"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0", "tapable@^2.2.1": + "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + "version" "2.2.1" + +"tar-stream@~2.2.0": + "integrity" "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==" + "resolved" "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "bl" "^4.0.3" + "end-of-stream" "^1.4.1" + "fs-constants" "^1.0.0" + "inherits" "^2.0.3" + "readable-stream" "^3.1.1" + +"tar@^6.1.11", "tar@^6.1.2", "tar@^6.2.0": + "integrity" "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==" + "resolved" "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz" + "version" "6.2.1" + dependencies: + "chownr" "^2.0.0" + "fs-minipass" "^2.0.0" + "minipass" "^5.0.0" + "minizlib" "^2.1.1" + "mkdirp" "^1.0.3" + "yallist" "^4.0.0" + +"telejson@^7.2.0": + "integrity" "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==" + "resolved" "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "memoizerific" "^1.11.3" + +"temp-dir@^3.0.0": + "integrity" "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==" + "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz" + "version" "3.0.0" + +"temp@^0.8.4": + "integrity" "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==" + "resolved" "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + "version" "0.8.4" + dependencies: + "rimraf" "~2.6.2" + +"tempy@^3.1.0": + "integrity" "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==" + "resolved" "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "is-stream" "^3.0.0" + "temp-dir" "^3.0.0" + "type-fest" "^2.12.2" + "unique-string" "^3.0.0" + +"terser-webpack-plugin@^5.3.1", "terser-webpack-plugin@^5.3.10", "terser-webpack-plugin@^5.3.3": + "integrity" "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==" + "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" + "version" "5.3.10" dependencies: "@jridgewell/trace-mapping" "^0.3.20" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.26.0" - -terser@5.29.1: - version "5.29.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.29.1.tgz#44e58045b70c09792ba14bfb7b4e14ca8755b9fa" - integrity sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" + "jest-worker" "^27.4.5" + "schema-utils" "^3.1.1" + "serialize-javascript" "^6.0.1" + "terser" "^5.26.0" -terser@^5.10.0, terser@^5.26.0: - version "5.31.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" - integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== +"terser@^5.10.0", "terser@^5.26.0", "terser@^5.4.0", "terser@5.29.2": + "integrity" "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==" + "resolved" "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz" + "version" "5.29.2" dependencies: "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" + "acorn" "^8.8.2" + "commander" "^2.20.0" + "source-map-support" "~0.5.20" -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== +"test-exclude@^6.0.0": + "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" + "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + "version" "6.0.0" dependencies: "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -throttleit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.1.tgz#304ec51631c3b770c65c6c6f76938b384000f4d5" - integrity sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ== - -through2@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@X.X.X, through@^2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -tiny-emitter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" - integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== - -tiny-invariant@^1.3.1, tiny-invariant@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" - integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@~0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tocbot@^4.20.1: - version "4.27.20" - resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.27.20.tgz#c7ba627585894fa306d65b08f53f624949becf19" - integrity sha512-6M78FT20+FA5edtx7KowLvhG3gbZ6GRcEkL/0b2TcPbn6Ba+1ayI3SEVxe25zjkWGs0jd04InImaO81Hd8Hukw== - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -totalist@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" - integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== - -tough-cookie-file-store@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tough-cookie-file-store/-/tough-cookie-file-store-2.0.3.tgz#788f7a6fe5cd8f61a1afb71b2f0b964ebf914b80" - integrity sha512-sMpZVcmFf6EYFHFFl+SYH4W1/OnXBYMGDsv2IlbQ2caHyFElW/UR/gpj/KYU1JwmP4dE9xqwv2+vWcmlXHojSw== - dependencies: - tough-cookie "^4.0.0" - -tough-cookie@^4.0.0, tough-cookie@^4.1.2, tough-cookie@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" - integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tree-kill@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -ts-api-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - -ts-dedent@^2.0.0, ts-dedent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" - integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== - -ts-jest@29.1.0: - version "29.1.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.0.tgz#4a9db4104a49b76d2b368ea775b6c9535c603891" - integrity sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "^21.0.1" - -ts-jest@^29.0.0: - version "29.1.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09" - integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-loader@^9.3.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" - integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - source-map "^0.7.4" - -ts-node@10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + "glob" "^7.1.4" + "minimatch" "^3.0.4" + +"text-table@^0.2.0": + "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" + +"thingies@^1.20.0": + "integrity" "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==" + "resolved" "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz" + "version" "1.21.0" + +"throttleit@^1.0.0": + "integrity" "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==" + "resolved" "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz" + "version" "1.0.1" + +"through@^2.3.4", "through@X.X.X": + "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + "version" "2.3.8" + +"thunky@^1.0.2": + "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + "version" "1.1.0" + +"tiny-emitter@^2.0.0": + "integrity" "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + "resolved" "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz" + "version" "2.1.0" + +"tiny-invariant@^1.3.1", "tiny-invariant@^1.3.3": + "integrity" "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz" + "version" "1.3.3" + +"tmp@^0.0.33": + "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" + "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + "version" "0.0.33" + dependencies: + "os-tmpdir" "~1.0.2" + +"tmp@~0.2.1": + "integrity" "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==" + "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz" + "version" "0.2.3" + +"tmpl@1.0.5": + "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + "version" "1.0.5" + +"to-fast-properties@^2.0.0": + "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + "version" "2.0.0" + +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "is-number" "^7.0.0" + +"toidentifier@1.0.1": + "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + "version" "1.0.1" + +"totalist@^3.0.0": + "integrity" "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" + "resolved" "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz" + "version" "3.0.1" + +"tough-cookie-file-store@^2.0.3": + "integrity" "sha512-sMpZVcmFf6EYFHFFl+SYH4W1/OnXBYMGDsv2IlbQ2caHyFElW/UR/gpj/KYU1JwmP4dE9xqwv2+vWcmlXHojSw==" + "resolved" "https://registry.npmjs.org/tough-cookie-file-store/-/tough-cookie-file-store-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "tough-cookie" "^4.0.0" + +"tough-cookie@^4.0.0", "tough-cookie@^4.1.2", "tough-cookie@^4.1.3": + "integrity" "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==" + "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz" + "version" "4.1.4" + dependencies: + "psl" "^1.1.33" + "punycode" "^2.1.1" + "universalify" "^0.2.0" + "url-parse" "^1.5.3" + +"tr46@^3.0.0": + "integrity" "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "punycode" "^2.1.1" + +"tr46@~0.0.3": + "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + "version" "0.0.3" + +"tree-dump@^1.0.1": + "integrity" "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==" + "resolved" "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz" + "version" "1.0.2" + +"tree-kill@1.2.2": + "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + "version" "1.2.2" + +"ts-api-utils@^1.0.1", "ts-api-utils@^1.3.0": + "integrity" "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==" + "resolved" "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz" + "version" "1.3.0" + +"ts-dedent@^2.0.0", "ts-dedent@^2.2.0": + "integrity" "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" + "resolved" "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" + "version" "2.2.0" + +"ts-jest@^29.0.0", "ts-jest@29.1.0": + "integrity" "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==" + "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz" + "version" "29.1.0" + dependencies: + "bs-logger" "0.x" + "fast-json-stable-stringify" "2.x" + "jest-util" "^29.0.0" + "json5" "^2.2.3" + "lodash.memoize" "4.x" + "make-error" "1.x" + "semver" "7.x" + "yargs-parser" "^21.0.1" + +"ts-loader@^9.3.1": + "integrity" "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==" + "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz" + "version" "9.5.1" + dependencies: + "chalk" "^4.1.0" + "enhanced-resolve" "^5.0.0" + "micromatch" "^4.0.0" + "semver" "^7.3.4" + "source-map" "^0.7.4" + +"ts-node@^10.8.2", "ts-node@>=9.0.0", "ts-node@10.9.2": + "integrity" "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==" + "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" + "version" "10.9.2" dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-node@^10.8.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + "acorn" "^8.4.1" + "acorn-walk" "^8.1.1" + "arg" "^4.1.0" + "create-require" "^1.1.0" + "diff" "^4.0.1" + "make-error" "^1.1.1" + "v8-compile-cache-lib" "^3.0.1" + "yn" "3.1.1" + +"ts-node@10.9.1": + "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" + "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + "version" "10.9.1" dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-toolbelt@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" - integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== - -tsconfig-paths-webpack-plugin@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz#84008fc3e3e0658fdb0262758b07b4da6265ff1a" - integrity sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.7.0" - tsconfig-paths "^4.0.0" - -tsconfig-paths-webpack-plugin@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763" - integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.7.0" - tsconfig-paths "^4.1.2" - -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + "acorn" "^8.4.1" + "acorn-walk" "^8.1.1" + "arg" "^4.1.0" + "create-require" "^1.1.0" + "diff" "^4.0.1" + "make-error" "^1.1.1" + "v8-compile-cache-lib" "^3.0.1" + "yn" "3.1.1" + +"tsconfig-paths-webpack-plugin@^4.0.1": + "integrity" "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==" + "resolved" "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "chalk" "^4.1.0" + "enhanced-resolve" "^5.7.0" + "tsconfig-paths" "^4.1.2" + +"tsconfig-paths-webpack-plugin@4.0.0": + "integrity" "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==" + "resolved" "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "chalk" "^4.1.0" + "enhanced-resolve" "^5.7.0" + "tsconfig-paths" "^4.0.0" + +"tsconfig-paths@^3.15.0": + "integrity" "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==" + "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" + "version" "3.15.0" dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsconfig-paths@^4.0.0, tsconfig-paths@^4.1.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tslib@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" - integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== - -tslib@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" - integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== - -tslib@2.6.2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tuf-js@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" - integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== + "json5" "^1.0.2" + "minimist" "^1.2.6" + "strip-bom" "^3.0.0" + +"tsconfig-paths@^4.0.0", "tsconfig-paths@^4.1.2": + "integrity" "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==" + "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "json5" "^2.2.2" + "minimist" "^1.2.6" + "strip-bom" "^3.0.0" + +"tslib@^1.10.0", "tslib@^1.9.0": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^1.13.0": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^1.8.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^2.6.1": + "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + "version" "2.6.2" + +"tslib@^2.6.2": + "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + "version" "2.6.2" + +"tslib@^2", "tslib@^2.0.0", "tslib@^2.0.1", "tslib@^2.0.3", "tslib@^2.1.0", "tslib@^2.3.0", "tslib@^2.4.0", "tslib@2", "tslib@2.6.0": + "integrity" "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz" + "version" "2.6.0" + +"tslib@2.3.1": + "integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" + "version" "2.3.1" + +"tslib@2.6.1": + "integrity" "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz" + "version" "2.6.1" + +"tslib@2.6.2": + "integrity" "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + "version" "2.6.2" + +"tslib@2.6.3": + "integrity" "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" + "version" "2.6.3" + +"tslint@^5.0.0 || ^6.0.0": + "integrity" "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==" + "resolved" "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz" + "version" "6.1.3" + dependencies: + "@babel/code-frame" "^7.0.0" + "builtin-modules" "^1.1.1" + "chalk" "^2.3.0" + "commander" "^2.12.1" + "diff" "^4.0.1" + "glob" "^7.1.1" + "js-yaml" "^3.13.1" + "minimatch" "^3.0.4" + "mkdirp" "^0.5.3" + "resolve" "^1.3.2" + "semver" "^5.3.0" + "tslib" "^1.13.0" + "tsutils" "^2.29.0" + +"tsscmp@1.0.6": + "integrity" "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" + "resolved" "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz" + "version" "1.0.6" + +"tsutils@^2.29.0": + "integrity" "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz" + "version" "2.29.0" + dependencies: + "tslib" "^1.8.1" + +"tsutils@^3.21.0": + "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + "version" "3.21.0" + dependencies: + "tslib" "^1.8.1" + +"tuf-js@^2.2.1": + "integrity" "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==" + "resolved" "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz" + "version" "2.2.1" dependencies: "@tufjs/models" "2.0.1" - debug "^4.3.4" - make-fetch-happen "^13.0.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -tweetnacl@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -twitter-api-v2@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/twitter-api-v2/-/twitter-api-v2-1.14.2.tgz#d928eeb588f3a195a1db8059f0654b75d4278d3a" - integrity sha512-389e/rWaN8zWkmD5z2IpKVb5+ojPxVtrexQoGBI1Xfib1mE/9M7k7zbnZ3Q/WLwthwcWkQIlB25ecT64AL8LvQ== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-fest@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -type-is@^1.6.4, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - -typed-assert@^1.0.8: - version "1.0.9" - resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" - integrity sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -types-ramda@^0.29.4: - version "0.29.10" - resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.29.10.tgz#820432905b820301c74f6396f07aa2359b41cde4" - integrity sha512-5PJiW/eiTPyXXBYGZOYGezMl6qj7keBiZheRwfjJZY26QPHsNrjfJnz0mru6oeqqoTHOni893Jfd6zyUXfQRWg== - dependencies: - ts-toolbelt "^9.6.0" - -typescript@5.4.4: - version "5.4.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.4.tgz#eb2471e7b0a5f1377523700a21669dce30c2d952" - integrity sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw== - -typescript@~5.4.2: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== - -ufo@^1.4.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" - integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== - -uglify-js@^3.1.4: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - -uid2@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" - integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== - -uid@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/uid/-/uid-2.0.2.tgz#4b5782abf0f2feeefc00fa88006b2b3b7af3e3b9" - integrity sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g== + "debug" "^4.3.4" + "make-fetch-happen" "^13.0.1" + +"tunnel-agent@^0.6.0": + "integrity" "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==" + "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + "version" "0.6.0" + dependencies: + "safe-buffer" "^5.0.1" + +"tweetnacl@^0.14.3": + "integrity" "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "version" "0.14.5" + +"tweetnacl@^1.0.1": + "integrity" "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + "version" "1.0.3" + +"tweetnacl@~0.14.0": + "integrity" "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "version" "0.14.5" + +"twitter-api-v2@1.14.2": + "integrity" "sha512-389e/rWaN8zWkmD5z2IpKVb5+ojPxVtrexQoGBI1Xfib1mE/9M7k7zbnZ3Q/WLwthwcWkQIlB25ecT64AL8LvQ==" + "resolved" "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.14.2.tgz" + "version" "1.14.2" + +"type-check@^0.4.0", "type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" + +"type-check@~0.3.2": + "integrity" "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "prelude-ls" "~1.1.2" + +"type-detect@4.0.8": + "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + "version" "4.0.8" + +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + +"type-fest@^0.21.3": + "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + "version" "0.21.3" + +"type-fest@^1.0.1": + "integrity" "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" + "version" "1.4.0" + +"type-fest@^2.12.2", "type-fest@^2.19.0": + "integrity" "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" + "version" "2.19.0" + +"type-is@^1.6.16", "type-is@^1.6.4", "type-is@~1.6.18": + "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" + "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + "version" "1.6.18" + dependencies: + "media-typer" "0.3.0" + "mime-types" "~2.1.24" + +"typed-array-buffer@^1.0.2": + "integrity" "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==" + "resolved" "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.7" + "es-errors" "^1.3.0" + "is-typed-array" "^1.1.13" + +"typed-array-byte-length@^1.0.1": + "integrity" "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==" + "resolved" "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "call-bind" "^1.0.7" + "for-each" "^0.3.3" + "gopd" "^1.0.1" + "has-proto" "^1.0.3" + "is-typed-array" "^1.1.13" + +"typed-array-byte-offset@^1.0.2": + "integrity" "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==" + "resolved" "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "available-typed-arrays" "^1.0.7" + "call-bind" "^1.0.7" + "for-each" "^0.3.3" + "gopd" "^1.0.1" + "has-proto" "^1.0.3" + "is-typed-array" "^1.1.13" + +"typed-array-length@^1.0.6": + "integrity" "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==" + "resolved" "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "call-bind" "^1.0.7" + "for-each" "^0.3.3" + "gopd" "^1.0.1" + "has-proto" "^1.0.3" + "is-typed-array" "^1.1.13" + "possible-typed-array-names" "^1.0.0" + +"typed-assert@^1.0.8": + "integrity" "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==" + "resolved" "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz" + "version" "1.0.9" + +"typedarray@^0.0.6": + "integrity" "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + "version" "0.0.6" + +"typescript@*", "typescript@^3 || ^4 || ^5", "typescript@^4.0.0 || ^5.0.0", "typescript@^4.9.0 || ^5.0.0", "typescript@>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev", "typescript@>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.2.0", "typescript@>=4.3 <6", "typescript@>=4.3.5", "typescript@>=4.8", "typescript@>=4.8.2", "typescript@>=4.9.5", "typescript@>=5.4 <5.6", "typescript@>3.6.0", "typescript@5.5.3": + "integrity" "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz" + "version" "5.5.3" + +"typescript@~5.4.2": + "integrity" "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz" + "version" "5.4.5" + +"ufo@^1.4.0": + "integrity" "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==" + "resolved" "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz" + "version" "1.5.3" + +"uid@2.0.2": + "integrity" "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==" + "resolved" "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz" + "version" "2.0.2" dependencies: "@lukeed/csprng" "^1.0.0" -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -underscore@1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" - integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -undici@6.11.1: - version "6.11.1" - resolved "https://registry.yarnpkg.com/undici/-/undici-6.11.1.tgz#75ab573677885b421ca2e6f5f17ff1185b24c68d" - integrity sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw== - -unfetch@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" - integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -union@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" - integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== - dependencies: - qs "^6.4.0" - -unique-filename@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" - integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== - dependencies: - unique-slug "^4.0.0" - -unique-slug@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" - integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -unist-util-is@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" - integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== - -unist-util-stringify-position@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" - integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== +"uid2@0.0.x": + "integrity" "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" + "resolved" "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz" + "version" "0.0.4" + +"unbox-primitive@^1.0.2": + "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" + "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "call-bind" "^1.0.2" + "has-bigints" "^1.0.2" + "has-symbols" "^1.0.3" + "which-boxed-primitive" "^1.0.2" + +"underscore@1.12.1": + "integrity" "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + "resolved" "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz" + "version" "1.12.1" + +"undici-types@~5.26.4": + "integrity" "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "resolved" "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + "version" "5.26.5" + +"undici-types@~6.19.2": + "integrity" "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + "resolved" "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" + "version" "6.19.8" + +"undici@6.19.2": + "integrity" "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==" + "resolved" "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz" + "version" "6.19.2" + +"unicode-canonical-property-names-ecmascript@^2.0.0": + "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"unicode-match-property-ecmascript@^2.0.0": + "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" + "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "unicode-canonical-property-names-ecmascript" "^2.0.0" + "unicode-property-aliases-ecmascript" "^2.0.0" + +"unicode-match-property-value-ecmascript@^2.1.0": + "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"unicode-property-aliases-ecmascript@^2.0.0": + "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + "version" "2.1.0" + +"unicorn-magic@^0.1.0": + "integrity" "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==" + "resolved" "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" + "version" "0.1.0" + +"union@~0.5.0": + "integrity" "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==" + "resolved" "https://registry.npmjs.org/union/-/union-0.5.0.tgz" + "version" "0.5.0" + dependencies: + "qs" "^6.4.0" + +"unique-filename@^3.0.0": + "integrity" "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==" + "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "unique-slug" "^4.0.0" + +"unique-slug@^4.0.0": + "integrity" "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==" + "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "imurmurhash" "^0.1.4" + +"unique-string@^3.0.0": + "integrity" "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==" + "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "crypto-random-string" "^4.0.0" + +"unist-util-is@^6.0.0": + "integrity" "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==" + "resolved" "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "@types/unist" "^3.0.0" + +"unist-util-stringify-position@^3.0.0": + "integrity" "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==" + "resolved" "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz" + "version" "3.0.3" dependencies: "@types/unist" "^2.0.0" -unist-util-visit-parents@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" - integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - -unist-util-visit@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" - 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" - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unplugin@^1.3.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.10.1.tgz#8ceda065dc71bc67d923dea0920f05c67f2cd68c" - integrity sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg== - dependencies: - acorn "^8.11.3" - chokidar "^3.6.0" - webpack-sources "^3.2.3" - webpack-virtual-modules "^0.6.1" - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -update-browserslist-db@^1.0.13: - version "1.0.15" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#60ed9f8cba4a728b7ecf7356f641a31e3a691d97" - integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA== - dependencies: - escalade "^3.1.2" - picocolors "^1.0.0" - -uri-js@^4.2.2, uri-js@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-join@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" - integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== - dependencies: - punycode "^1.4.1" - qs "^6.11.2" - -use-callback-ref@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" - integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== - dependencies: - tslib "^2.0.0" - -use-resize-observer@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/use-resize-observer/-/use-resize-observer-9.1.0.tgz#14735235cf3268569c1ea468f8a90c5789fc5c6c" - integrity sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow== - dependencies: - "@juggle/resize-observer" "^3.3.1" - -use-sidecar@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" - integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== - dependencies: - detect-node-es "^1.1.0" - tslib "^2.0.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util@^0.12.4: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== - -utils-merge@1.0.1, utils-merge@1.x.x, utils-merge@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - -uuid@9.0.1, uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -uuid@^8.3.0, uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uvu@^0.5.0: - version "0.5.6" - resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" - integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== - dependencies: - dequal "^2.0.0" - diff "^5.0.0" - kleur "^4.0.3" - sade "^1.7.3" - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== +"unist-util-visit-parents@^6.0.0": + "integrity" "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==" + "resolved" "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "@types/unist" "^3.0.0" + "unist-util-is" "^6.0.0" + +"unist-util-visit@^5.0.0": + "integrity" "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==" + "resolved" "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "@types/unist" "^3.0.0" + "unist-util-is" "^6.0.0" + "unist-util-visit-parents" "^6.0.0" + +"universalify@^0.1.0": + "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + "version" "0.1.2" + +"universalify@^0.2.0": + "integrity" "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + "version" "0.2.0" + +"universalify@^2.0.0": + "integrity" "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" + "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + "version" "2.0.1" + +"unpipe@~1.0.0", "unpipe@1.0.0": + "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "version" "1.0.0" + +"unplugin@^1.3.1": + "integrity" "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==" + "resolved" "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz" + "version" "1.10.1" + dependencies: + "acorn" "^8.11.3" + "chokidar" "^3.6.0" + "webpack-sources" "^3.2.3" + "webpack-virtual-modules" "^0.6.1" + +"untildify@^4.0.0": + "integrity" "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + "resolved" "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" + "version" "4.0.0" + +"upath@2.0.1": + "integrity" "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==" + "resolved" "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" + "version" "2.0.1" + +"update-browserslist-db@^1.1.0": + "integrity" "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==" + "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "escalade" "^3.1.2" + "picocolors" "^1.0.1" + +"uri-js@^4.2.2", "uri-js@^4.4.1": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "punycode" "^2.1.0" + +"url-join@^4.0.1": + "integrity" "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + "resolved" "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" + "version" "4.0.1" + +"url-parse@^1.5.3": + "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" + "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + "version" "1.5.10" + dependencies: + "querystringify" "^2.1.1" + "requires-port" "^1.0.0" + +"url@^0.11.0": + "integrity" "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==" + "resolved" "https://registry.npmjs.org/url/-/url-0.11.3.tgz" + "version" "0.11.3" + dependencies: + "punycode" "^1.4.1" + "qs" "^6.11.2" + +"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": + "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"util@^0.12.4": + "integrity" "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==" + "resolved" "https://registry.npmjs.org/util/-/util-0.12.5.tgz" + "version" "0.12.5" + dependencies: + "inherits" "^2.0.3" + "is-arguments" "^1.0.4" + "is-generator-function" "^1.0.7" + "is-typed-array" "^1.1.3" + "which-typed-array" "^1.1.2" + +"utila@~0.4": + "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + "version" "0.4.0" + +"utils-merge@^1.0.1", "utils-merge@1.0.1", "utils-merge@1.x.x": + "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + "version" "1.0.1" + +"uuid@^8.3.0": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" + +"uuid@^8.3.2": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" + +"uuid@^9.0.0", "uuid@9.0.1": + "integrity" "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" + "version" "9.0.1" + +"uuid@9.0.0": + "integrity" "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" + "version" "9.0.0" + +"uvu@^0.5.0": + "integrity" "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==" + "resolved" "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz" + "version" "0.5.6" + dependencies: + "dequal" "^2.0.0" + "diff" "^5.0.0" + "kleur" "^4.0.3" + "sade" "^1.7.3" + +"v8-compile-cache-lib@^3.0.1": + "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + "version" "3.0.1" + +"v8-to-istanbul@^9.0.1": + "integrity" "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==" + "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz" + "version" "9.2.0" dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" - integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== - -validator@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-13.12.0.tgz#7d78e76ba85504da3fee4fd1922b385914d4b35f" - integrity sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vite@5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.7.tgz#9f685a2c4c70707fef6d37341b0e809c366da619" - integrity sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA== - dependencies: - esbuild "^0.19.3" - postcss "^8.4.35" - rollup "^4.2.0" + "convert-source-map" "^2.0.0" + +"validate-npm-package-license@^3.0.4": + "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" + "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "spdx-correct" "^3.0.0" + "spdx-expression-parse" "^3.0.0" + +"validate-npm-package-name@^5.0.0": + "integrity" "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==" + "resolved" "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz" + "version" "5.0.1" + +"validator@^13.9.0": + "integrity" "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==" + "resolved" "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz" + "version" "13.12.0" + +"vary@^1", "vary@^1.1.2", "vary@~1.1.2": + "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + "version" "1.1.2" + +"verror@1.10.0": + "integrity" "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==" + "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + "version" "1.10.0" + dependencies: + "assert-plus" "^1.0.0" + "core-util-is" "1.0.2" + "extsprintf" "^1.2.0" + +"vite@^3.0.0 || ^4.0.0 || ^5.0.0", "vite@5.3.2": + "integrity" "sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==" + "resolved" "https://registry.npmjs.org/vite/-/vite-5.3.2.tgz" + "version" "5.3.2" + dependencies: + "esbuild" "^0.21.3" + "postcss" "^8.4.38" + "rollup" "^4.13.0" optionalDependencies: - fsevents "~2.3.3" + "fsevents" "~2.3.3" -w3c-xmlserializer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" - integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== +"w3c-xmlserializer@^4.0.0": + "integrity" "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==" + "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" + "version" "4.0.0" dependencies: - xml-name-validator "^4.0.0" + "xml-name-validator" "^4.0.0" -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" +"walk-up-path@^3.0.1": + "integrity" "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==" + "resolved" "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz" + "version" "3.0.1" -watchpack@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== +"walker@^1.0.8": + "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" + "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + "version" "1.0.8" dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" + "makeerror" "1.0.12" -watchpack@^2.2.0, watchpack@^2.4.0, watchpack@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" - integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== +"watchpack@^2.4.1", "watchpack@2.4.1": + "integrity" "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==" + "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz" + "version" "2.4.1" dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.1.2" -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== +"wbuf@^1.1.0", "wbuf@^1.7.3": + "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" + "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + "version" "1.7.3" dependencies: - minimalistic-assert "^1.0.0" + "minimalistic-assert" "^1.0.0" -wcwidth@^1.0.0, wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== +"wcwidth@^1.0.0", "wcwidth@^1.0.1": + "integrity" "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==" + "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + "version" "1.0.1" dependencies: - defaults "^1.0.3" + "defaults" "^1.0.3" -web-worker@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" - integrity sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA== +"weak-lru-cache@^1.2.2": + "integrity" "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==" + "resolved" "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz" + "version" "1.2.2" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +"web-worker@^1.2.0": + "integrity" "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + "resolved" "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz" + "version" "1.3.0" -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -webpack-bundle-analyzer@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" - integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== +"webcrypto-core@^1.8.0": + "integrity" "sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==" + "resolved" "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.0.tgz" + "version" "1.8.0" dependencies: - "@discoveryjs/json-ext" "0.5.7" - acorn "^8.0.4" - acorn-walk "^8.0.0" - commander "^7.2.0" - debounce "^1.2.1" - escape-string-regexp "^4.0.0" - gzip-size "^6.0.0" - html-escaper "^2.0.2" - is-plain-object "^5.0.0" - opener "^1.5.2" - picocolors "^1.0.0" - sirv "^2.0.3" - ws "^7.3.1" - -webpack-dev-middleware@6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz#0463232e59b7d7330fa154121528d484d36eb973" - integrity sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ== - dependencies: - colorette "^2.0.10" - memfs "^3.4.12" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-middleware@^5.3.1, webpack-dev-middleware@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" - integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== - dependencies: - colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-middleware@^6.1.1: - version "6.1.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz#79f4103f8c898564c9e96c3a9c2422de50f249bc" - integrity sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw== - dependencies: - colorette "^2.0.10" - memfs "^3.4.12" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - -webpack-dev-server@4.15.1: - version "4.15.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" - integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + "asn1js" "^3.0.1" + "pvtsutils" "^1.3.5" + "tslib" "^2.6.2" + +"webidl-conversions@^3.0.0": + "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + "version" "3.0.1" + +"webidl-conversions@^7.0.0": + "integrity" "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + "version" "7.0.0" + +"webpack-bundle-analyzer@4.10.1": + "integrity" "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==" + "resolved" "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz" + "version" "4.10.1" 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" - -webpack-dev-server@^4.9.3: - version "4.15.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" - integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== + "@discoveryjs/json-ext" "0.5.7" + "acorn" "^8.0.4" + "acorn-walk" "^8.0.0" + "commander" "^7.2.0" + "debounce" "^1.2.1" + "escape-string-regexp" "^4.0.0" + "gzip-size" "^6.0.0" + "html-escaper" "^2.0.2" + "is-plain-object" "^5.0.0" + "opener" "^1.5.2" + "picocolors" "^1.0.0" + "sirv" "^2.0.3" + "ws" "^7.3.1" + +"webpack-dev-middleware@^5.3.4": + "integrity" "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==" + "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz" + "version" "5.3.4" + dependencies: + "colorette" "^2.0.10" + "memfs" "^3.4.3" + "mime-types" "^2.1.31" + "range-parser" "^1.2.1" + "schema-utils" "^4.0.0" + +"webpack-dev-middleware@^6.1.2": + "integrity" "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==" + "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz" + "version" "6.1.3" + dependencies: + "colorette" "^2.0.10" + "memfs" "^3.4.12" + "mime-types" "^2.1.31" + "range-parser" "^1.2.1" + "schema-utils" "^4.0.0" + +"webpack-dev-middleware@^7.1.0", "webpack-dev-middleware@7.2.1": + "integrity" "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==" + "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz" + "version" "7.2.1" + dependencies: + "colorette" "^2.0.10" + "memfs" "^4.6.0" + "mime-types" "^2.1.31" + "on-finished" "^2.4.1" + "range-parser" "^1.2.1" + "schema-utils" "^4.0.0" + +"webpack-dev-server@^4.9.3": + "integrity" "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==" + "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz" + "version" "4.15.2" dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -18641,428 +16707,427 @@ webpack-dev-server@^4.9.3: "@types/serve-static" "^1.13.10" "@types/sockjs" "^0.3.33" "@types/ws" "^8.5.5" - ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" - colorette "^2.0.10" - compression "^1.7.4" - connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" - graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" - serve-index "^1.9.1" - sockjs "^0.3.24" - spdy "^4.0.2" - webpack-dev-middleware "^5.3.4" - ws "^8.13.0" - -webpack-hot-middleware@^2.25.1: - version "2.26.1" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz#87214f1e3f9f3acab9271fef9e6ed7b637d719c0" - integrity sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A== - dependencies: - ansi-html-community "0.0.8" - html-entities "^2.1.0" - strip-ansi "^6.0.0" - -webpack-merge@5.10.0, webpack-merge@^5.8.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - -webpack-node-externals@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917" - integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== - -webpack-sources@^3.0.0, webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack-subresource-integrity@5.1.0, webpack-subresource-integrity@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz#8b7606b033c6ccac14e684267cb7fb1f5c2a132a" - integrity sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q== - dependencies: - typed-assert "^1.0.8" - -webpack-virtual-modules@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" - integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== - -webpack-virtual-modules@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz#ac6fdb9c5adb8caecd82ec241c9631b7a3681b6f" - integrity sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg== - -webpack@5, webpack@^5.80.0: - version "5.91.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== + "ansi-html-community" "^0.0.8" + "bonjour-service" "^1.0.11" + "chokidar" "^3.5.3" + "colorette" "^2.0.10" + "compression" "^1.7.4" + "connect-history-api-fallback" "^2.0.0" + "default-gateway" "^6.0.3" + "express" "^4.17.3" + "graceful-fs" "^4.2.6" + "html-entities" "^2.3.2" + "http-proxy-middleware" "^2.0.3" + "ipaddr.js" "^2.0.1" + "launch-editor" "^2.6.0" + "open" "^8.0.9" + "p-retry" "^4.5.0" + "rimraf" "^3.0.2" + "schema-utils" "^4.0.0" + "selfsigned" "^2.1.1" + "serve-index" "^1.9.1" + "sockjs" "^0.3.24" + "spdy" "^4.0.2" + "webpack-dev-middleware" "^5.3.4" + "ws" "^8.13.0" + +"webpack-dev-server@^5.0.2", "webpack-dev-server@5.0.4": + "integrity" "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==" + "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz" + "version" "5.0.4" + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" + "ansi-html-community" "^0.0.8" + "bonjour-service" "^1.2.1" + "chokidar" "^3.6.0" + "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.4.0" + "http-proxy-middleware" "^2.0.3" + "ipaddr.js" "^2.1.0" + "launch-editor" "^2.6.1" + "open" "^10.0.3" + "p-retry" "^6.2.0" + "rimraf" "^5.0.5" + "schema-utils" "^4.2.0" + "selfsigned" "^2.4.1" + "serve-index" "^1.9.1" + "sockjs" "^0.3.24" + "spdy" "^4.0.2" + "webpack-dev-middleware" "^7.1.0" + "ws" "^8.16.0" + +"webpack-hot-middleware@^2.25.1": + "integrity" "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==" + "resolved" "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz" + "version" "2.26.1" + dependencies: + "ansi-html-community" "0.0.8" + "html-entities" "^2.1.0" + "strip-ansi" "^6.0.0" + +"webpack-merge@^5.8.0", "webpack-merge@5.10.0": + "integrity" "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==" + "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz" + "version" "5.10.0" + dependencies: + "clone-deep" "^4.0.1" + "flat" "^5.0.2" + "wildcard" "^2.0.0" + +"webpack-node-externals@^3.0.0": + "integrity" "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==" + "resolved" "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" + "version" "3.0.0" + +"webpack-sources@^3.0.0", "webpack-sources@^3.2.3": + "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + "version" "3.2.3" + +"webpack-subresource-integrity@^5.1.0", "webpack-subresource-integrity@5.1.0": + "integrity" "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==" + "resolved" "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "typed-assert" "^1.0.8" + +"webpack-virtual-modules@^0.6.0", "webpack-virtual-modules@^0.6.1": + "integrity" "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==" + "resolved" "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz" + "version" "0.6.2" + +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.11.0", "webpack@^5.12.0", "webpack@^5.20.0", "webpack@^5.27.0", "webpack@^5.30.0", "webpack@^5.54.0", "webpack@^5.72.1", "webpack@^5.80.0", "webpack@^5.88.0", "webpack@>=5", "webpack@5", "webpack@5.92.1": + "integrity" "sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA==" + "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz" + "version" "5.92.1" dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" "@webassemblyjs/ast" "^1.12.1" "@webassemblyjs/wasm-edit" "^1.12.1" "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - -webpack@5.90.3: - version "5.90.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac" - integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@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.21.10" - 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.10" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -which@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" - integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== - dependencies: - isexe "^3.1.1" - -wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - -word-wrap@^1.2.5, word-wrap@~1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + "acorn" "^8.7.1" + "acorn-import-attributes" "^1.9.5" + "browserslist" "^4.21.10" + "chrome-trace-event" "^1.0.2" + "enhanced-resolve" "^5.17.0" + "es-module-lexer" "^1.2.1" + "eslint-scope" "5.1.1" + "events" "^3.2.0" + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.2.11" + "json-parse-even-better-errors" "^2.3.1" + "loader-runner" "^4.2.0" + "mime-types" "^2.1.27" + "neo-async" "^2.6.2" + "schema-utils" "^3.2.0" + "tapable" "^2.1.1" + "terser-webpack-plugin" "^5.3.10" + "watchpack" "^2.4.1" + "webpack-sources" "^3.2.3" + +"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": + "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" + "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + "version" "0.7.4" + dependencies: + "http-parser-js" ">=0.5.1" + "safe-buffer" ">=5.1.0" + "websocket-extensions" ">=0.1.1" + +"websocket-extensions@>=0.1.1": + "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + "version" "0.1.4" + +"whatwg-encoding@^2.0.0": + "integrity" "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==" + "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "iconv-lite" "0.6.3" + +"whatwg-mimetype@^3.0.0": + "integrity" "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" + "version" "3.0.0" + +"whatwg-url@^11.0.0": + "integrity" "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" + "version" "11.0.0" + dependencies: + "tr46" "^3.0.0" + "webidl-conversions" "^7.0.0" + +"whatwg-url@^5.0.0": + "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "tr46" "~0.0.3" + "webidl-conversions" "^3.0.0" + +"which-boxed-primitive@^1.0.2": + "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" + "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "is-bigint" "^1.0.1" + "is-boolean-object" "^1.1.0" + "is-number-object" "^1.0.4" + "is-string" "^1.0.5" + "is-symbol" "^1.0.3" + +"which-typed-array@^1.1.14", "which-typed-array@^1.1.15", "which-typed-array@^1.1.2": + "integrity" "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==" + "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" + "version" "1.1.15" + dependencies: + "available-typed-arrays" "^1.0.7" + "call-bind" "^1.0.7" + "for-each" "^0.3.3" + "gopd" "^1.0.1" + "has-tostringtag" "^1.0.2" + +"which@^1.2.14": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" + dependencies: + "isexe" "^2.0.0" + +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"which@^4.0.0": + "integrity" "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==" + "resolved" "https://registry.npmjs.org/which/-/which-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "isexe" "^3.1.1" + +"wildcard@^2.0.0": + "integrity" "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + "resolved" "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" + "version" "2.0.1" + +"word-wrap@^1.2.5", "word-wrap@~1.2.3": + "integrity" "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" + "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" + "version" "1.2.5" "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@^6.1.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7.3.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^8.11.0, ws@^8.13.0, ws@^8.2.3: - version "8.17.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" - integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xmldoc@^1.1.3: - version "1.3.0" - resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-1.3.0.tgz#7823225b096c74036347c9ec5924d06b6a3cebab" - integrity sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng== - dependencies: - sax "^1.2.4" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yahoo-finance2@2.11.3: - version "2.11.3" - resolved "https://registry.yarnpkg.com/yahoo-finance2/-/yahoo-finance2-2.11.3.tgz#082fb14ac6312f3b91be4e9a0cc1a97e96c42944" - integrity sha512-yN4ADFNi2oNYtO79ntbEkSWdVi4KVmGYLwDJ5KV0czxILbAGj4ah6oCBYvMONeHAeDqxtS62zrG8xrHNF/2STw== + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^3.0.1": + "integrity" "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "string-width" "^2.1.1" + "strip-ansi" "^4.0.0" + +"wrap-ansi@^6.2.0": + "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^8.1.0": + "integrity" "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "ansi-styles" "^6.1.0" + "string-width" "^5.0.1" + "strip-ansi" "^7.0.1" + +"wrap-ansi@^9.0.0": + "integrity" "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" + "version" "9.0.0" + dependencies: + "ansi-styles" "^6.2.1" + "string-width" "^7.0.0" + "strip-ansi" "^7.1.0" + +"wrappy@1": + "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"write-file-atomic@^2.3.0": + "integrity" "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "graceful-fs" "^4.1.11" + "imurmurhash" "^0.1.4" + "signal-exit" "^3.0.2" + +"write-file-atomic@^4.0.2": + "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "imurmurhash" "^0.1.4" + "signal-exit" "^3.0.7" + +"ws@*", "ws@^8.11.0", "ws@^8.13.0", "ws@^8.16.0", "ws@^8.2.3", "ws@8.17.1": + "integrity" "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" + "version" "8.17.1" + +"ws@^7.3.1": + "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + "version" "7.5.9" + +"xml-name-validator@^4.0.0": + "integrity" "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" + "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + "version" "4.0.0" + +"xmlchars@^2.2.0": + "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + "version" "2.2.0" + +"xmldoc@^1.1.3": + "integrity" "sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==" + "resolved" "https://registry.npmjs.org/xmldoc/-/xmldoc-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "sax" "^1.2.4" + +"xtend@^4.0.0": + "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + "version" "4.0.2" + +"y18n@^5.0.5": + "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + "version" "5.0.8" + +"yahoo-finance2@2.11.3": + "integrity" "sha512-yN4ADFNi2oNYtO79ntbEkSWdVi4KVmGYLwDJ5KV0czxILbAGj4ah6oCBYvMONeHAeDqxtS62zrG8xrHNF/2STw==" + "resolved" "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-2.11.3.tgz" + "version" "2.11.3" dependencies: "@types/tough-cookie" "^4.0.2" - ajv "8.10.0" - ajv-formats "2.1.1" - node-fetch "^2.6.1" - tough-cookie "^4.1.2" - tough-cookie-file-store "^2.0.3" - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@17.7.2, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== - -zone.js@0.14.5: - version "0.14.5" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.14.5.tgz#7f3591dc4cad1a030cda86b03d10450b719dd460" - integrity sha512-9XYWZzY6PhHOSdkYryNcMm7L8EK7a4q+GbTvxbIA2a9lMdRUpGuyaYvLDcg8D6bdn+JomSsbPcilVKg6SmUx6w== - dependencies: - tslib "^2.3.0" - -zone.js@~0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.10.3.tgz#3e5e4da03c607c9dcd92e37dd35687a14a140c16" - integrity sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== + "ajv" "8.10.0" + "ajv-formats" "2.1.1" + "node-fetch" "^2.6.1" + "tough-cookie" "^4.1.2" + "tough-cookie-file-store" "^2.0.3" + +"yallist@^3.0.2": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yaml@^1.10.0", "yaml@^1.7.2": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" + +"yargs-parser@^21.0.1", "yargs-parser@^21.1.1", "yargs-parser@21.1.1": + "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + "version" "21.1.1" + +"yargs@^17.2.1", "yargs@^17.3.1", "yargs@^17.6.2", "yargs@^17.7.2", "yargs@17.7.2": + "integrity" "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + "version" "17.7.2" + dependencies: + "cliui" "^8.0.1" + "escalade" "^3.1.1" + "get-caller-file" "^2.0.5" + "require-directory" "^2.1.1" + "string-width" "^4.2.3" + "y18n" "^5.0.5" + "yargs-parser" "^21.1.1" + +"yauzl@^2.10.0": + "integrity" "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==" + "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + "version" "2.10.0" + dependencies: + "buffer-crc32" "~0.2.3" + "fd-slicer" "~1.1.0" + +"ylru@^1.2.0": + "integrity" "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==" + "resolved" "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz" + "version" "1.4.0" + +"yn@3.1.1": + "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + "version" "3.1.1" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" + +"yocto-queue@^1.0.0": + "integrity" "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" + "version" "1.0.0" + +"yoctocolors-cjs@^2.1.2": + "integrity" "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==" + "resolved" "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz" + "version" "2.1.2" + +"zone.js@>= 0.11.1 < 1.0.0", "zone.js@~0.14.0", "zone.js@0.14.10": + "integrity" "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==" + "resolved" "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz" + "version" "0.14.10" + +"zone.js@~0.10.2", "zone.js@~0.10.3": + "integrity" "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + "resolved" "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz" + "version" "0.10.3"